【问题标题】:Is HttpContext.Current Ever Null in a Web Application?HttpContext.Current 在 Web 应用程序中是否为 Null?
【发布时间】:2009-10-27 15:32:57
【问题描述】:

Web 应用程序中的 HttpContext.Current 是否为空(假设未使用线程)?更具体地说,它会不会在 void Application_OnError(object sender, EventArgs e) 中为空?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    this other question

    在 AcquireRequestState 事件之前会话不会被初始化,因此在此之前发生的任何错误都不会有可用的会话变量。

    我认为这同样适用于 HttpContext.Current 和 HttpContext.Current.Session

    是的,我认为 HttpContext.Current 在 Application_OnError 中有时可能为空

    【讨论】:

    • @codeulike - 是的,在阅读了 xOn 和你的之后,它可以为空是有道理的。我认为我没有完全考虑清楚。谢谢。
    【解决方案2】:

    在这方面,IIS 7 中有一些有趣的变化。在 IIS6 中,Application_Start 中有一个 HttpContext。从 IIS7 开始,情况不再如此。

    更多信息:

    http://blogs.msdn.com/webtopics/archive/2009/02/12/webbaseevent-raise-method-fails-in-application-start-event-with-a-nullreferenceexception-on-iis-7-0.aspx

    -奥辛

    【讨论】:

    • @xOn - 是的,我读过这方面的内容,但想更具体地了解 OnError,请注意,如果在应用程序启动期间出现问题,那么它在 OnError 中将为空。
    【解决方案3】:

    我相信它可能会发生,例如,您分离一个工作线程,响应结束,工作线程抛出一个异常。您的 Application_OnError 将捕获异常,但 HttpContext.Current 将为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      相关资源
      最近更新 更多