【发布时间】:2010-10-11 15:40:43
【问题描述】:
这是一个多部分的问题。
我有一个可能需要几分钟才能完成的过程,它是通过使用异步 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 一点一点地推送到客户端...这适用于同步请求,我将查看 xmlHttpRequest 是否为每一行获取 readystatechange 事件。
我一直避免在 ASP.NET 应用程序上使用多线程,因为您无法控制工作进程何时终止,这将导致其生成的所有线程都终止。
相反,既然 IIS 已经为您这样做了,为什么还要重新发明一个单独的线程池。
【问题讨论】:
-
回答重新发明线程池...对于长时间运行的进程,不建议使用线程池。 msdn.microsoft.com/en-us/magazine/cc164128.aspx
标签: asp.net ajax xmlhttprequest httphandler