IIS 6 глотает ошибки при использовании <customErrors mode = "On" - PullRequest
0 голосов
/ 24 октября 2011

У меня есть приложение (папка с пулом приложений), работающее на iis 6, где я пытаюсь настроить пользовательскую страницу ошибки. У меня в веб-конфигурации есть элемент для пользовательской ошибки, но он никогда не обнаруживается Если я захожу в IIS и смотрю на свойства приложения, я могу установить пользовательскую ошибку, указав на oops.html. Похоже, что IIS не использует настройки в моем web.config для обработки ошибок.

Вот что у меня есть в web.config

<system.web>
    ...
    <customErrors mode="On" defaultRedirect="/oops.html" redirectMode="ResponseRewrite" />
    ...
</system.web>
<system.webServer>
    ...
    <httpErrors existingResponse="PassThrough" />
    ...
<system.webServer>

Адрес приложения выглядит так: www.mysite.com/myappfolder/

веб-конфигурация находится в: www.mysite.com/myappfolder/

и oops.html находится в: www.mysite.com/myappfolder/oops.html

если попытаться перейти к: www.mysite.com/myappfolder/NothingReal 404 будет выброшено, и только когда я настрою IIS для перенаправления на oops.html, я увижу страницу.

Каковы правила определения цели ошибок клиентов? Должен ли я удалить "/" как насчет использования ~ / myappfolder / oops.html? Как обойти обработку ошибок IIS 6 и перенаправить все ошибки на мою страницу?

Ответы [ 3 ]

0 голосов
/ 25 октября 2011

Элемент customErrors в файле web.config применяется только к ресурсам, отслеживаемым средой выполнения ASP.NET. По умолчанию статические ресурсы, такие как изображения и файлы HTML, обрабатываются IIS и никогда не передаются среде выполнения ASP.NET.

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

Так что это была комбинация вопросов. Во-первых, на сервере происходит два уровня обработки ошибок.

Первый уровень находится в IIS. Когда IIS обнаруживает ошибку, он использует свои страницы ошибок для ретрансляции или скрытия проблемы.

Второй уровень находится во время выполнения ASP. При наличии ошибки на странице сценарий может затем делегировать ее на страницу «упс», если веб-конфигурация настроена для этого.

Если доза asp не перенаправляет на страницу «упс» или расположение этой страницы неверно, IIS обрабатывает ошибку. В случае не перенаправления будет выдана ошибка уровня 500. В случае неправильного местоположения страницы "упс" будет 404.

Моя проблема была в том, как это обрабатывалось, и что IIS и моя веб-конфигурация указывали на одну и ту же страницу, делая отладку немного более сложной.

В конце я решил свои проблемы, первая из которых заключалась в том, что путь относительно веб-конфигурации, которая обрабатывает перенаправление, и что ~ / использовался неправильно.

0 голосов
/ 24 октября 2011

Вы пробовали использовать ~/oops.html?

...