加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在Windows Azure上的HTTP处理程序中是否需要ThreadAb

发布时间:2020-12-16 06:25:11 所属栏目:asp.Net 来源:网络整理
导读:我在一个“
我在一个“小”计算实例中托管在 Windows Azure上的ASP.NET HTTP处理程序.它处理大型二进制文件的下载和上传.在该Web角色中没有其他任何内容,并且根据指南配置了2个实例.当从具有慢速连接的计算机完成下载并且我尝试一次执行多次下载以阻塞客户端的带宽时,有时我会在处理程序中获得ThreadAbortException,最常见的是在.Write到Response.OutputStream期间(我事先设置了Response.BufferOutput = false).堆栈跟踪如下:

System.Threading.ThreadAbortException: Thread was being aborted.
   at System.Web.Hosting.UnsafeIISMethods.MgdExplicitFlush(IntPtr context)
   at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
   at System.Web.HttpResponse.Flush(Boolean finalFlush)
   at System.Web.HttpWriter.WriteFromStream(Byte[] data,Int32 offset,Int32 size)
   at MyHandler.ProcessGetRequest(HttpContext context)
   at MyHandler.ProcessRequest(HttpContext context)

(Stream.Write调用显然是内联的,因此它不会显示在堆栈跟踪中).

为什么线程被中止?我猜我正在达到某种超时(可能是套接字写入超时),正在以正常方式中止线程,以便ASP.NET运行时处理它?

请注意,它是一个单独的HTTP处理程序,而不是.aspx / .cshtml页面或MVC控制器,在我的代码中没有任何地方我触及Response.End,Response.Redirect或Server.Transfer.

解决方法

当您上传大文件时,IIS会尝试读取请求流,如果它阻塞超过5分钟,则会导致IIS最终抛出ThreadAbortException.

尝试使用此行:

<httpRuntime maxRequestLength="2097150" executionTimeout="3600"/>

也请尝试以下建议:http://cutesoft.net/forums/permalink/77440/77438/ShowThread.aspx#77438

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读