我需要使用复杂的长时间工作逻辑来处理丢失的请求文件。
我可以这样做,Application_Error
但不确定它本身是否异步?
如果需要 5 分钟或更长时间才能工作,此处理程序会一直阻止其他用户吗?
我需要使用复杂的长时间工作逻辑来处理丢失的请求文件。
我可以这样做,Application_Error
但不确定它本身是否异步?
如果需要 5 分钟或更长时间才能工作,此处理程序会一直阻止其他用户吗?
这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
出错,然后继续加载其他页面,并且可以正常工作。