【问题标题】:Is Global.asax Application_Error async?Global.asax Application_Error 是异步的吗?
【发布时间】:2012-12-07 17:39:18
【问题描述】:

我需要用复杂的长逻辑处理请求的文件丢失。

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

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

【问题讨论】:

    标签: asp.net


    【解决方案1】:

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

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

    这是为什么呢?因为 session 正在锁定完整的处理,请看这个问题/答案: 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上,报错,继续加载其他页面,就可以了。

    【讨论】:

    • 我的问题是:我必须执行长时间的异步操作,而不是针对 .aspx 页面,而是针对必须生成的缺失文件的请求静态 url。在 aspx.page 的情况下,我可以执行以下操作:设置
    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2013-02-07
    • 2015-10-18
    • 1970-01-01
    相关资源
    最近更新 更多