我在我的应用程序中收到此错误。我在错误日志中经常看到这些错误,但我不确定来源。 这是错误的堆栈跟踪。
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);
我在这里尝试了一些建议的解决方案但没有任何效果。有人可以提出可行的解决方案吗我在这里做错了什么?
答案 0 :(得分:0)
此异常表示用户在文件完成下载之前关闭了他/她的浏览器或导航到另一个页面,从而关闭了连接。用户永远不会看到此错误,但Elmah会记录它。您可以在写入下游之前检查您的客户端是否已连接,但它无法完全解决问题。
if (Response.IsClientConnected)
{
// write your file to down stream
}
我建议您使用Elmah的过滤器来阻止Elmah记录它。 elmah Error Filtering