远程主机关闭了连接。 错误代码是0x800704CD
每当发生异常时,我都会收到来自我网站的错误电子邮件。 我得到这个错误:
远程主机关闭了连接。 错误代码是0x800704CD
不知道为什么。 我每天得到30分左右。 我无法重现错误,因此无法追查到问题。
网站是在IIS7上运行的ASP.NET 2。
堆栈跟踪:
在System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32结果,布尔throwOnDisconnect)在System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()在System.Web.HttpResponse.Flush(布尔finalFlush)在System.Web.HttpResponse.Flush( )在System.Web.HttpResponse.End()在System.Web.UI.HttpResponseWrapper.System.Web.UI.IHttpResponse.End()在System.Web.UI.PageRequestManager.OnPageError(对象发件人,EventArgs e)在系统System.Web.UI上System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)System.Web.UI.Page.HandleError(异常e)上的.Web.UI.TemplateControl.OnError(EventArgs e)。 Page.ProcessRequest(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)在System.Web.UI.Page.ProcessRequest()在System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext上下文)在System.Web.UI.Page.ProcessRequest(HttpContext上下文)在System.Web.H的ASP.default_aspx.ProcessRequest(HttpContext上下文) ttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)
我一直得到这个。 这意味着用户开始下载文件,然后它或者失败 ,或者他们取消了它。
要重现异常请尝试自己做 - 但是我不知道任何方法来防止它(除了处理这个特定的例外)。
您需要根据您的应用程序决定最佳前进方向。
正如m.edmondson所说,“远程主机关闭了连接。” 当用户或浏览器取消某些内容或网络连接丢失时发生。不过,它不一定必须是文件下载,而只需要对任何资源进行请求以导致对客户端的响应。 基本上,错误意味着响应无法发送,因为服务器不能再与客户端(浏览器)通话。
您可以采取一些步骤来阻止它的发生。 如果您手动发送Response.Write,Response.Flush,从Web服务/页面方法或类似的东西返回数据,那么您应该考虑在发送响应之前检查Response.IsClientConnected。 另外,如果响应可能需要很长时间或需要大量服务器端处理,则应定期检查该响应,直到调用response.end为止。 有关此属性的详情,请参阅以下内容:
http://msdn.microsoft.com/en-us/library/system.web.httpresponse.isclientconnected.aspx
或者,我认为这很可能是你的情况,错误是由框架内的某些东西引起的。 以下链接可能会被使用:
http://blog.whitesites.com/fixing-The-remote-host-closed-the-connection-The-error-code-is-0x80070057__633882307305519259_blog.htm
以下堆栈溢出帖子也可能是有趣的:
“远程主机关闭连接”在Response.OutputStream.Write中
可以用下面的代码重现错误:
public ActionResult ClosingTheConnectionAction(){
try
{
//we need to set buffer to false to
//make sure data is written in chunks
Response.Buffer = false;
var someText = "Some text here to make things happen ;-)";
var content = GetBytes( someText );
for(var i=0; i < 100; i++)
{
Response.OutputStream.Write(content, 0, content.Length);
}
return View();
}
catch(HttpException hex)
{
if (hex.Message.StartsWith("The remote host closed the connection. The error code is 0x800704CD."))
{
//react on remote host closed the connection exception.
var msg = hex.Message;
}
}
catch(Exception somethingElseHappened)
{
//handle it with some other code
}
return View();
}
现在以调试模式运行网站。 在写入输出流的循环中放置一个断点。 转到该操作方法,并在第一次迭代通过后关闭浏览器的选项卡。 按F10继续循环。 在下一次迭代之后,您将看到异常。 享受你的例外:-)
链接地址: http://www.djcxy.com/p/36805.html上一篇: The remote host closed the connection. The error code is 0x800704CD