gpt4 book ai didi

asp.net - Windows Azure 上的 HTTP 处理程序中是否会出现 ThreadAbortException?

转载 作者:行者123 更新时间:2023-12-05 01:25:14 24 4
gpt4 key购买 nike

我有一个托管在 Windows Azure 上“小型”计算实例中的 ASP.NET HTTP 处理程序。它处理大型二进制文件的下载和上传。该 Web 角色中没有其他任何内容运行,并且根据准则配置了 2 个实例。当从连接速度较慢的计算机完成下载并且我尝试一次执行多个下载以阻塞客户端的带宽时,有时我会在处理程序中收到 ThreadAbortException ,最常见的是在.WriteResponse.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 Controller ,并且我的代码中没有任何地方触及 Response.EndResponse.RedirectServer.Transfer

最佳答案

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

尝试使用这一行:

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

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

关于asp.net - Windows Azure 上的 HTTP 处理程序中是否会出现 ThreadAbortException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11411298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com