Почему IIS возвращает 500 кодов состояния, когда время ожидания сервера истекло? - PullRequest
1 голос
/ 14 марта 2011

Мы работаем с IIS7 & .net 4.0. Когда время ожидания сервера истекает из-за длительного выполнения запроса, отображается страница ошибки, но код ошибки - всего 500, а не 408 или, возможно, 503, которые я ожидаю. Мы хотим показать другую страницу с ошибкой, если это тайм-аут, но я не могу настроить ее в разделе <customErrors>, если она просто выдаёт ошибку 500. Это проблема конфигурации?

1 Ответ

2 голосов
/ 19 марта 2011

Вы можете добавить такой код в ваш 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();
    }
}
}

Я обнаружил, что это не работает должным образом, и все равно возвращает ошибку 500 без Response.End ().Учитывая ваш вопрос, я не уверен, что вы хотите вместо этого сделать перенаправление, чтобы показать страницу с ошибкой, которая сама выдает 503, а не в приведенном выше.

Это действительно ASP.NET, возвращающий статус 500, IIS просто передает его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...