经常看到用户要在ASP.Net 中跑一些需要很长时间才能返回的任务(如DTS Package等等)。这样一来一个页面可能很长时间无法Render到客户端,而使用户对当前任务的状态产生疑惑。
MSDN上看到了一些解决方案:
Build Your ASP.NET Pages on a Richer Bedrock
Asynchronous
http://msdn.microsoft.com/msdnmag/issues/03/12/DesignPatterns/
它们都将用户重定向到一个等待页面,然后再重定向到执行任务的页面。任务的执行过程中,用户看到的是等待页面,等任务执行完,整个执行任务的页面就会彻底返回到客户端。这种做法还是发现有个问题,因为任务执行过程中IE和服务器之间没有任何通讯,IIS服务器会将非活动的连接关闭。这个超时值虽然可以在网站属性(Web Site)里设得更长一点,但是这个超时太大会对整个网站的性能会有影响。
这里可以采用另外一种方法:在服务器端另起一个线程执行任务,并通过客户端脚本不停刷新页面来给用户反馈,只到任务运行结束。这样也可以防止同一个任务被同时执行多次:
ASP.Net Lengthy Task Visual Feedback Page
http://blog.joycode.com/tingwang/articles/47292.aspx
打印 | 张贴于 2005-04-08 20:51:00 | Tag:ASP.Net
留言反馈
请问如何设置这个值?
当然,如果单个任务也需要很长时间,可以考虑另起线程执行