为什么当服务器超时时 IIS 返回 500 状态代码?

发布于 2024-10-22 08:53:08 字数 192 浏览 2 评论 0原文

我们正在运行 IIS7 & .net 4.0。当服务器由于长时间运行的请求而超时时,会显示错误页面,但错误代码只是 500,而不是我期望的 408 或可能 503。如果超时,我们希望显示不同的错误页面,但如果它只是给出 500 错误,我无法在 部分中进行配置。这是配置问题吗?

We're running IIS7 & .net 4.0. When the server times out due to a long running request, the error page is shown, but the error code is just 500 rather than 408 or possibly 503 that I'm expecting. We want to show a different error page if it's a timeout, but I can't configure this in the <customErrors> section if it's just giving a 500 error. Is this a configuration issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风流物 2024-10-29 08:53:08

您可以将这样的代码添加到您的 global.asax.cs 中,

public class Global : System.Web.HttpApplication
{
protected void Application_Error(Object sender, EventArgs e)
{
    Exception ex = HttpContext.Current.Server.GetLastError();
    if (ex != null && ex is HttpException && ex.Message == "Request timed out.")
    {
       HttpContext.Current.Response.StatusCode = 503;
       HttpContext.Current.Response.End();
    }
}
}

我发现这无法正常工作,并且在没有 Response.End() 的情况下仍然返回 500 错误。鉴于您的问题,我不确定您是否想要进行重定向来显示错误页面,该页面本身会输出 503 而不是上面的内容。

它实际上是 ASP.NET 返回 500 状态,IIS 只是传递它。

You can add code like this into your global.asax.cs

public class Global : System.Web.HttpApplication
{
protected void Application_Error(Object sender, EventArgs e)
{
    Exception ex = HttpContext.Current.Server.GetLastError();
    if (ex != null && ex is HttpException && ex.Message == "Request timed out.")
    {
       HttpContext.Current.Response.StatusCode = 503;
       HttpContext.Current.Response.End();
    }
}
}

I found this to not work properly and still return a 500 error without the Response.End() in there. Given your question, I'm not sure if you want to do a redirect instead to show an error page that would itself output the 503 instead of in the above.

Its really ASP.NET returning the 500 status, IIS is just passing it along.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文