这是一个多部分问题。ASP.NET HTTPHandlers和长时间运行的进程
我有一个过程,可能需要几分钟才能完成,它通过使用异步JavaScript请求调用HTTPHandler来运行。
问题1:如何确保此请求不会在服务器和客户端上超时?
问题2:在最终页面完成之前,是否可以从HTTPHandler发送数据,并将处理发送回XmlHttpRequest对象?
我想计算实际工作量和完成回报百分比。我猜这是可能的。
任何提示?
编辑:
简单的测试:
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 2009-03-05 23:46:39