IIS7 - комбинация пользовательских ошибок ASP.NET и ошибок IIS httpErrors - PullRequest
2 голосов
/ 30 ноября 2011

Я видел ряд подобных вопросов в StackOverflow и на других сайтах, но, похоже, ничего не помогло решить проблему, с которой я столкнулся.

Я пытаюсь настроить сайт для возвратакод состояния 500 и пользовательская страница ошибок (статический файл HTML) для ошибок ASP.NET, которые обычно возвращают 500, где customErrors установлен в значение «Выкл.», и код состояния 404 для страниц, о которых наша система сообщает, что они не найдены (Страница 404 - это не статическая страница, устанавливаемая через IIS, она генерируется нашей системой CMS).

Я уже на полпути, но наткнулся на кирпичную стену.

В настоящее время я могу вернуть правильный код состояния 404, где наша система возвращает страницу с кодом состояния 404, но теперь я не могу вернуть код состояния 500 для ошибок сервера ASP.NET.Мне удалось это, установив Response.TrySkipIisCustomErrors = true.Мои 500 ошибок, однако, оказываются более сложными.Если я удаляю раздел конфигурации customErrors из моего web.config, я получаю ошибку 500, но это уродливый ASP.NET YSOD.Похоже, я вообще не могу указать, чтобы это указывало на пользовательскую страницу, использующую IIS, независимо от того, какие настройки я использую для раздела конфигурации httpErrors, и независимо от того, что я установил через графический интерфейс IIS.Если я добавлю раздел customErrors обратно, я получу пользовательскую страницу ошибок, как и ожидалось, но получаю ошибку 200 или 302 (в зависимости от значения атрибута redirectMode).

У кого-нибудь есть идеи?

С точки зрения раздела конфигурации httpErrors, я до сих пор пробовал следующее:

Установка errorMode на «Custom» и указание моего статического содержимого для ошибок с statusCode «500» и subStatusCode«-1» (сначала удаляя существующую ошибку 500). Установка errorMode на «Подробно» и указание моего статического содержимого для ошибок с statusCode «500» и subStatusCode «-1» (сначала удаление существующей ошибки 500).PassThrough "для обоих вариантов конфигурации выше.

1 Ответ

0 голосов
/ 30 ноября 2011

Кажется, что вы можете превзойти то, что вам нужно сделать, то есть, если я вас правильно понимаю. Вот хорошая ссылка

Кажется, вам нужно обработать событие global.asax Application_Error. Таким образом, вы можете справиться с этим так, как вам нравится, и у вас не появится этот ужасный экран ошибок asp.net. В любом веб-приложении, которое я создаю, я помещаю туда некоторый код для обработки ошибок, чтобы пользователь не видел никаких неформатированных «взрывов»

...