【问题标题】:Why is Response.StatusCode set to 200 when Application_Error() is invoked?为什么调用 Application_Error() 时 Response.StatusCode 设置为 200?
【发布时间】:2013-09-05 13:49:27
【问题描述】:

在我的 MVC 应用程序中,我有时会遇到未处理的异常并调用 Application_Error() 处理程序。

问题是如果我在Application_Error() 中访问Response.StatusCode,它恰好是200,尽管有一个未处理的异常。我宁愿期待 500。

虽然有未处理的异常,为什么还是 200?

【问题讨论】:

  • 这个值可能不是客户端收到的值。可能还没有更新。 ASP.NET 管道有时是个谜。
  • 我什至尝试通过执行 Response.StatusCode=XXX 来更改它。仍然没有重置它。奇怪

标签: asp.net .net asp.net-mvc-3 iis global-asax


【解决方案1】:

在 Application_Error() 中你可以这样做:

        var lastError = Server.GetLastError();

        var statusCode = 500;
        var httpException = lastError as HttpException;
        if (httpException != null)
            statusCode = httpException.GetHttpCode();

【讨论】:

  • 很好,只是它没有解释为什么 Response.StatusCode 是 200。
猜你喜欢
  • 1970-01-01
  • 2010-09-30
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
相关资源
最近更新 更多