Global.asax Application_Error是异步吗?

时间:2012-12-20 08:40:30

标签: asp.net

我需要处理复杂的长工作逻辑所缺少的请求文件。

我可以在Application_Error中进行,但不确定它本身是否异步?

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

1 个答案:

答案 0 :(得分:0)

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

如果您不使用会话,当然如果您不使用其他同步锁,例如mutex或数据库打开/读/写

为什么?因为会话锁定了完整的处理,请看这个问题/答案: call aspx page to return an image randomly slow
ASP.NET Server does not process pages asynchronously
Trying to make Web Method Asynchronous
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely
File upload and result pooling kills ASP.NET web app

因此,为简单起见,Application_Error只是一个静态函数调用,但它连接到页面或处理程序的处理。确保页面或处理程序不会相互阻塞,一切正常。

另一方面,处理5分钟,如果你试图将500个一起放在查询列表中,你可能还有其他问题。

我只是做一个简单的测试,将System.Threading.Thread.Sleep(20000);放在Application_Error上并发出错误,然后继续加载其他页面,然后就可以了。