希望保持活动的连接由asp.net中的服务器关闭

Mah*_*tha 22 asp.net

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

注意: 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
Run Code Online (Sandbox Code Playgroud)

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

ASP.NET版本:4.0.30319.272

Ono*_*dai 7

这篇MSDN帖子似乎描述了类似的情况.如果符合您的问题,请告诉我们:

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

引用:

[...] .Net在套接字的一个senddata中发送第一个Expect 100,然后发送实际请求.服务器以Continue 100回复.正是在这里.Net显示消息"基础连接已关闭.连接意外关闭".

.Net的印象是它无论如何已经发送了数据但是服务器发送了Connection:Close所以它显示错误而不重发(sic)请求.

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

System.Net.ServicePointManager.Expect100Continue = False
Run Code Online (Sandbox Code Playgroud)

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


Gon*_*alo 6

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

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