0

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

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

谢谢你。

4

2 回答 2

0

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

于 2012-07-16T13:33:35.093 回答
0

只能同时执行有限数量的线程,可能是您已用完所有可用线程。您可以尝试使用IHttpAsyncHandler.

IHttpAsyncHandler在 MSDN上创建了一个演练,请参阅演练:创建异步 HTTP 处理程序。

编辑:您还可以尝试增加并发请求的数量,使用:

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

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

于 2012-04-24T20:48:40.200 回答