0

私の Web サイトには、ハンドラー (GetFile.ashx) があり、これを実行すると、特定のダウンロード レートでファイルをダウンロードできます。ユーザーがダウンロードを完了するまで、ハンドラーを実行する必要があります。問題は、ハンドラーの実行中、Web サイトの他のページ (およびハンドラー自体) に到達できず、IIS がページの実行が完了するまで待機してから他の要求に応答することです.どうすれば解決できますか?

私が指摘したもう 1 つのことは、Amazon EC2 のサーバーで IIS7 を使用しているということです... IIS が一度に 1 つのリクエストしか処理できないというのはどうしてでしょうか??

ありがとうございました。

4

2 に答える 2

0

解決しました。IRequireSessionを実装するページ(またはハンドラー)を使用すると、セッションが排他的にロックされるため、他のページの処理がロックされます。解決策は、セッション状態を必要としないハンドラーを作成することです。

于 2012-07-16T13:33:35.093 に答える
0

同時に実行できるスレッドの数は限られています。使用可能なすべてのスレッドを使い果たしている可能性があります。を使用して、代わりに非同期 HTTP ハンドラーの実装を試みることができますIHttpAsyncHandler

IHttpAsyncHandlerMSDN で存在を作成するためのチュートリアルについては、「チュートリアル: 非同期 HTTP ハンドラーの作成」を参照してください。

編集:次を使用して、同時リクエストの数を増やすこともできます。

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

ASP.NET フォーラム ( http://forums.asp.net/t/1447626.aspx/1 ) のディスカッションを参照してください。

于 2012-04-24T20:48:40.200 に答える