これは複数の部分からなる質問です。ASP.NET HTTPHandlerと長時間実行するプロセス
私は完了までに数分かかることがあります。非同期のjavascriptリクエストを使用してHTTPHandlerを呼び出すことによって実行されます。
質問1:この要求がサーバーとクライアントの両方でタイムアウトしないようにするにはどうすればよいですか。
質問2:最後のページが完了する前にXmlHttpRequestオブジェクトに返された処理中に、HTTPHandlerからデータを送信することはできますか?
私は実際の作業負荷を計算し、完了したパーセンテージを返したいと思います。私はこれが可能であると推測している。
ヒント?
EDIT:
簡単なテスト:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
for (int i = 0; i < 100; i++)
{
context.Response.Write("Hello World " + i + Environment.NewLine);
System.Threading.Thread.Sleep(500);
context.Response.Flush();
}
}
がクライアントにビットによるHello Worldのビットをプッシュします。これは、synchroniousリクエストに応じて動作します...のXMLHttpRequestはreadystatechangeを取得する場合、私が表示されますイベントを各行に割り当てます。
私はいつもASP.NETアプリケーションのマルチスレッドを避けています。なぜなら、作業プロセスがいつ中断するのかを制御していないことです。その結果、生成されたすべてのスレッドが死んでしまいます。
代わりに、IISがこれを実行しているときに別のスレッドプールを再作成するのはなぜですか。
スレッドプールを再発明する答え...長時間実行するプロセスの場合、スレッドプールを使用することはお勧めしません。 http://msdn.microsoft.com/en-us/magazine/cc164128.aspx – Keltex