当我尝试重定向到下一页时,我收到以下错误
注意: 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
这篇MSDN帖子似乎描述了类似的情况.如果符合您的问题,请告诉我们:
引用:
[...] .Net在套接字的一个senddata中发送第一个Expect 100,然后发送实际请求.服务器以Continue 100回复.正是在这里.Net显示消息"基础连接已关闭.连接意外关闭".
.Net的印象是它无论如何已经发送了数据但是服务器发送了Connection:Close所以它显示错误而不重发(sic)请求.
所以上面的解决方案对我有用
Run Code Online (Sandbox Code Playgroud)System.Net.ServicePointManager.Expect100Continue = False
如果您想查看闯入者之间的流量,请使用Wireshark或类似工具窥探HTTP交换.
这可能是因为客户端的超时时间大于服务器的超时时间.服务器关闭连接,客户端仍在等待响应或发送请求.
您必须将KeepAlive属性设置为False,以便连接自行关闭并为每个请求重新打开.这将避免尝试使用已关闭的连接的问题.