异常(消息):远程主机关闭了连接。错误代码是0x800703E3

时间:2014-02-28 02:12:27

标签: c# asp.net-mvc-4

我在我的应用程序中收到此错误。我在错误日志中经常看到这些错误,但我不确定来源。 这是错误的堆栈跟踪。

Exception (Stack):    at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)    
at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()     
at System.Web.HttpResponse.Flush(Boolean finalFlush)     
at System.Web.Mvc.FileContentResult.WriteFile(HttpResponseBase response)     
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()     
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)     
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)     
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult)

但是在做了一些谷歌搜索后,我发现原因可能是我下载文件的方式,但我不确定。这也是源代码。

string Id = id.Split(new[] { '!' }).First();
DocumentInfo Content = Doc.ContentDownLoad(Settings, docId);
Response.Clear();
Response.BufferOutput = false;  
fileName = Content.DocName + "." + Content.FileExtn;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);

return File(Content.Content, Content.MimeType);

我在这里尝试了一些建议的解决方案但没有任何效果。有人可以提出可行的解决方案吗我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

此异常表示用户在文件完成下载之前关闭了他/她的浏览器或导航到另一个页面,从而关闭了连接。用户永远不会看到此错误,但Elmah会记录它。您可以在写入下游之前检查您的客户端是否已连接,但它无法完全解决问题。

if (Response.IsClientConnected)
{
   // write your file to down stream 
}

我建议您使用Elmah的过滤器来阻止Elmah记录它。 elmah Error Filtering