Case by Case..

Wang Ting's Tech Blog
随笔 - 40, 评论 - 249, 引用 - 12

导航

工具

关于

勿发广告,谢谢配合

标签

每月存档

广告



访客

 

经常看到用户要在ASP.Net 中跑一些需要很长时间才能返回的任务(如DTS Package等等)。这样一来一个页面可能很长时间无法Render到客户端,而使用户对当前任务的状态产生疑惑。

 

MSDN上看到了一些解决方案:

 

Build Your ASP.NET Pages on a Richer Bedrock

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/BedrockASPNET.asp?frame=true

 

Asynchronous Wait State Pattern in ASP.NET

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

留言反馈

#re: ASP.Net 中运行需要很长时间处理的任务 编辑
运行InetMgr,打开网站的属性,默认的"Web Site" tab下面有"Connection timeout",默认120秒……
2005-10-21 22:40:00 | [匿名用户:Wang Ting]
#re: ASP.Net 中运行需要很长时间处理的任务 编辑
"这个超时值虽然可以在网站属性(Web Site)里设得更长一点".

请问如何设置这个值?
2005-10-20 14:02:00 | [匿名用户:Andrew]
#re: ASP.Net 中运行需要很长时间处理的任务 编辑
要再详细点了!
2005-04-28 10:56:00 | [匿名用户: 隔离安全栅]
#re: ASP.Net 中运行需要很长时间处理的任务 编辑
靠这么写出来的HTML可能不是合法完整的HTML……
2005-04-16 00:27:00 | [匿名用户:Wang Ting]
#re: ASP.Net 中运行需要很长时间处理的任务 编辑
可以显示等待页面,但是并不是重定向的那种,而是用Response.Write输出的一些内容,并且在执行过程中不断write出来,这样既能保持响应,又能是用户了解执行情况。
当然,如果单个任务也需要很长时间,可以考虑另起线程执行
2005-04-15 17:50:00 | [匿名用户:路过]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System