26

当我尝试重定向到下一页时,出现以下错误

笔记: Even the connection is open and it is fine.

底层连接已关闭:服务器关闭了预期保持活动状态的连接。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息::System.Net.WebException基础连接已关闭:服务器关闭了预期保持活动状态的连接。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪

[WebException: The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.]
  Effrtpartsigndone.Page_Load(Object sender, EventArgs e) +8196
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
  System.Web.UI.Control.OnLoad(EventArgs e) +91
  System.Web.UI.Control.LoadRecursive() +74
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207

版本信息:Microsoft .NET Framework 版本:4.0.30319;

ASP.NET 版本:4.0.30319.272

4

7 回答 7

9

这个 MSDN 帖子似乎描述了类似的情况。让我们知道它是否符合您的问题:

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/246ffc07-1cab-44b5-b529-f1135866ebca/

引用:

[...] .Net 首先在套接字的一个senddata中发送期望 100,然后发送实际请求。服务器以 Continue 100 响应。正是在这里 .Net 显示消息“基础连接已关闭。连接已意外关闭”。

.Net 的印象是它已经发送了数据,但服务器发送了 Connection : Close 所以它显示错误而不重新发送(原文如此)请求。

所以对我有用的上述解决方案是

System.Net.ServicePointManager.Expect100Continue = False

如果您想查看闯入者之间的流量,请使用 Wireshark 或类似工具窥探 HTTP 交换。

于 2012-12-27T14:24:41.473 回答
8

这可能是因为客户端的超时时间大于服务器的超时时间。服务器关闭连接,客户端仍在等待响应或发送请求。

您必须将 KeepAlive 属性设置为 False,以便连接将自行关闭并为每个请求重新打开。这将避免尝试使用关闭连接的问题。

于 2016-05-30T14:38:17.593 回答
2

我有这个配置:

ServicePointManager.DefaultConnectionLimit = 100;

一旦我删除它,错误就消失了。

于 2013-12-14T00:05:03.947 回答
2

使用 RestSharp 库时我遇到了同样的问题。我通过在创建 RestClient 对象之前添加这两行来解决:

ServicePointManager.DefaultConnectionLimit = 100;
ServicePointManager.MaxServicePointIdleTime = 5000;
于 2017-09-08T11:10:57.603 回答
1

我在serviceBehaviors元素的服务器配置中遇到了同样的问题和设置

<serviceBehaviors>
    <behavior name="ServiceBehaviour">
        ...
        <dataContractSerializer maxItemsInObjectGraph="6553500"/>
        ...
    </behavior>
</serviceBehaviors>

解决了这个问题。

跟踪有助于找到这些问题的根源:https ://msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx

于 2015-07-03T08:29:26.357 回答
0

我们在返回的对象图中有一个循环。我知道这可能不是你的问题,但我在这里添加它以防其他人有同样的问题。我们已IncludeExceptionDetailInFaults启用但在任何客户端(我们的应用程序或 WCF 测试客户端)中都没有收到错误。幸运的是,它出现在服务器日志中,所以我们能够以这种方式找到它。

我们有parent -> childchild -> parent对于双向导航,我们不得不断开那个链接,取而代之parent -> child的是,孩子有一个 id 来查找父母,然后错误就消失了。

希望这对某人有帮助!

于 2014-03-10T00:58:23.230 回答
0

就我而言,问题在于文件长度。请检查您的服务器上允许的文件大小。在您的脚本中,只需检查这部分:

dataStream.Write(filesBytesArray, 0, filesBytesArray.Length);
dataStream.Close();

如果您不知道,只需限制前端部分中的文件上传大小,即。HTML<input type="file">上传元素,这是限制文件大小和其他过滤器的良好参考

于 2015-11-21T19:28:20.060 回答