处理程序正在处理时,网站没有响应

时间:2012-04-24 20:14:31

标签: asp.net iis-7 windows-server-2008 threadpool worker-process

在我的网站上,我有一个处理程序(GetFile.ashx),在执行时,它允许您以给定的下载速率下载文件。处理程序需要执行,直到用户完成下载。 问题是当处理程序正在执行时,网站的其他页面(以及处理程序本身)无法访问,并且IIS在页面完成执行之前一直等待响应其他请求。我该如何解决?

我注意到的另一件事是我在Amazon EC2上的服务器上使用IIS7 ...... IIS怎么可能一次只能处理一个请求?

谢谢。

2 个答案:

答案 0 :(得分:0)

只有有限数量的线程可以同时执行,可能是您已用完所有可用的线程。您可以尝试使用IHttpAsyncHandler来实现异步HTTP处理程序。

MSDN上存在用于创建IHttpAsyncHandler的演练,请参阅Walkthrough: Creating an Asynchronous HTTP Handler

编辑: 您还可以尝试使用以下方法增加并发请求数:

<system.web>
  <applicationPool maxConcurrentRequestsPerCPU="24" />
</system.web>

请参阅ASP.NET论坛上的讨论http://forums.asp.net/t/1447626.aspx/1

答案 1 :(得分:0)

我解决了。如果您使用实现IRequireSession的页面(或句柄),将锁定其他页面,因为它将对会话具有独占锁定。解决方案是创建一个不需要会话状态的处理程序。