Asp.net 调用应用程序_Error()时,为什么Response.StatusCode设置为200?

Asp.net 调用应用程序_Error()时,为什么Response.StatusCode设置为200?,asp.net,.net,asp.net-mvc-3,iis,global-asax,Asp.net,.net,Asp.net Mvc 3,Iis,Global Asax,在我的MVC应用程序中,有时会出现未处理的异常和调用的application\u Error()handler 问题是,如果我访问Response.StatusCode内部Application\u Error()。我宁愿要500英镑 虽然存在未处理的异常,但为什么是200?在应用程序内部\u Error()您可以执行以下操作: var lastError = Server.GetLastError(); var statusCode = 500;

在我的MVC应用程序中,有时会出现未处理的异常和调用的
application\u Error()
handler

问题是,如果我访问
Response.StatusCode
内部
Application\u Error()。我宁愿要500英镑

虽然存在未处理的异常,但为什么是200?

在应用程序内部\u Error()您可以执行以下操作:

        var lastError = Server.GetLastError();

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

此值可能不是客户端收到的值。可能还没有更新。ASP.NET管道有时是个谜。这可能有助于我尝试通过Response.StatusCode=XXX来更改它。但这并没有重置它。很奇怪,只是它没有解释为什么
响应。StatusCode
是200。