перезапись корневого файла web.config для включения тега клиентских ошибок

У меня есть ситуация, когда я хочу поймать 404 ошибки, вызванные HTML-страницами (а не только aspx-страницами), но у меня есть доступ только к web.config корневой папки моего веб-сайта и всем подкаталогам (обратите внимание, я не имею доступ к фактическому серверу IIS, и я не могу создавать приложения или изменять настройки)

Итак, я попробовал использовать клиентские ошибки web.config в подкаталоге, и они действительно работают, только для страниц ASPX, а не страниц HTML, кто-нибудь знает почему?


person Ayyash    schedule 21.04.2009    source источник


Ответы (4)


Вы можете ознакомиться с новыми возможностями маршрутизации для ASP.NET: http://msdn.microsoft.com/en-us/library/cc668201.aspx .

person knut    schedule 22.04.2009
comment
да, пока нет лучшего решения, чем это, спасибо - person Ayyash; 22.04.2009

Обратите внимание, что два приведенных выше ответа верны для обычного случая. Однако IIS 6.0 и ниже можно настроить для обработки HTML-страниц или чего-либо еще через ASP.NET. Кроме того, IIS 7 радикально изменил ситуацию - по сути, конвейер ASP.NET теперь является конвейером IIS, так что любой фрагмент контента обрабатывается через любые HttpModules.

Таким образом, в IIS 7 и выше все, что вы можете настроить для страниц ASPX, вы можете настроить для страниц HTML.

person John Saunders    schedule 22.04.2009

HTML-страницы не анализируются IIS, поэтому на них не влияют настройки web.config. Я не знаю, как обойти это без настройки параметров в IIS.

person Jeremy    schedule 22.04.2009

Чтобы быть немного более конкретным, чем то, что сказал Джереми, IIS сопоставляет разные расширения файлов с разными исполняемыми файлами. По умолчанию он будет настроен так, чтобы позволить среде выполнения .NET обрабатывать файлы .aspx (в этом случае ваш web.config будет загружен и использован), но он будет обслуживать страницы .html непосредственно сам (и, следовательно, будет использовать собственный 404 обработка ошибок).

Раздражает, но я не думаю, что вы можете сделать что-то, кроме контроля над IIS или превращения плоских html-страниц в aspx-страницы (даже если они не содержат фактического содержимого на стороне сервера), чтобы обмануть IIS и позволить .NET справиться с ними.

person Alconja    schedule 22.04.2009
comment
на самом деле страниц не существует, в этом весь смысл отлова ошибок 404 :) - person Ayyash; 22.04.2009
comment
Хорошо, тогда, чтобы быть педантичным, IIS обрабатывает запрос для страницы .html, которая, когда она не существует, обслуживает 404, а .NET обрабатывает запрос для .aspx страница, а затем делает то, что вы настроили для этого в web.config, когда он не может найти файл (при условии, что IIS настроен так, чтобы не проверять наличие самого файла .aspx, чего он не будет по умолчанию ). Лучше? :) - person Alconja; 22.04.2009