3

我需要使用复杂的长时间工作逻辑来处理丢失的请求文件。

我可以这样做,Application_Error但不确定它本身是否异步?

如果需要 5 分钟或更长时间才能工作,此处理程序会一直阻止其他用户吗?

4

1 回答 1

0

Application_Error一部分,是从您加载的页面中调用的,所以问题是页面或处理程序是否是异步的。

如果你不使用会话,当然如果你不使用其他同步锁,比如互斥锁,或者数据库打开/读/写

这是为什么 ?因为会话正在锁定完整处理,请查看此问题/答案: 调用 aspx 页面以随机返回图像缓慢的
ASP.NET 服务器不会异步处理页面
尝试使 Web 方法异步
Web 应用程序在处理共享相同的另一个 Web 应用程序时被阻止session  
哪些性能计数器可用于识别 ASP.NET 瓶颈?  
完全替换 ASP.Net 的会话  
文件上传和结果池会杀死 ASP.NET Web 应用程序

所以为了简单起见,这Application_Error只是一个静态函数调用,但连接到页面或处理程序的处理。确保页面或处理程序没有相互阻塞,一切正常。

另一方面,5 分钟的处理,如果您尝试将 500 个放在一起而不将它们放在查询列表中,您可能会遇到其他问题。

我只是做了一个简单的测试,放置System.Threading.Thread.Sleep(20000);Application_Error出错,然后继续加载其他页面,并且可以正常工作。

于 2012-12-20T08:54:49.780 回答