Форсирование пользовательских 404 страниц для страниц в маршрутизации URL - PullRequest
14 голосов
/ 09 июня 2011

Веб-формы платформы кодирования ASP.NET 4.0 на IIS7.5

Если я запрашиваю страницу blahblah.aspx, которая не существует, я перехожу на свою пользовательскую страницу ошибки для исключения «Страница не найдена». Я реализовал маршрутизацию URL и поэтому пропустил все свои расширения .aspx для маршрутов.

Теперь, если я наберу www.mysite.com/blahblah (то есть URL без расширения) вместо того, чтобы перейти на мою пользовательскую страницу ошибок, она будет перенаправлена ​​на мою страницу ошибок IIS 404.

Что я должен сделать, чтобы моя страница ошибок отображалась на моем сайте вместо страницы ошибок IIS?

Ответы [ 2 ]

32 голосов
/ 29 июня 2012

Простой способ

Если на вашем веб-сервере IIS 7 его еще нет, установите пакет администрирования IIS 7.0 от Microsoft.

Перейдите в корневой каталогимя веб-сервера в IIS и откройте Configuration Editor (часть пакета администрирования).Измените раскрывающийся список на system.webServer/httpErrors, щелкните правой кнопкой мыши defaultPath и выберите 'defaultPath' Attribute -> Unlock Attribute.

Unlocking the defaultPath attribute

Затем попробуйте снова изменить страницу пользовательского обработчика ошибок.Перейдите на свой сайт, откройте Error Pages в группе IIS, нажмите Edit Feature Settings справа, выберите Custom error pages и, наконец, введите свой путь для страницы по умолчанию.

Setting custom error pages

На этот раз ошибки блокировки нет.

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

Ручной способ

Я знаю, что вы можете сделать все это путем прямого редактирования в блокноте соответствующего файла конфигурации на веб-сервере.И это может потребоваться для вашей конкретной среды веб-хостинга или протоколов изменения производственного веб-сервера компании.Но зачем усложнять, если это не нужно?Кроме того, таким образом, вы можете сделать это в графическом интерфейсе и сравнить до и после, чтобы увидеть, какие изменения вы действительно должны сделать.Но если вы ДОЛЖНЫ сделать это вручную, то:

Откройте файл %windir%\System32\inetsrv\config\applicationHost.config в Блокноте.Запустите Notepad от имени администратора, если у вас возникли проблемы.

Совет для профессионалов: не используйте notepad ++ для редактирования applicationHost.config.В конечном итоге вы в тайне и в молчании сохраните 32-битную копию файла, который находится в другой папке, чем та, в которой IIS просматривает (из-за Windows, а не np ++), фактически не затрагивая файл, который вы хотите изменить.

Вы увидите что-то вроде этого:

<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">

Удалите раздел ,defaultPath и сохраните.

Вы сможете внести необходимые изменения.

5 голосов
/ 09 июня 2011

Если вы этого еще не сделали ...

Перейдите в IIS, выберите свой веб-сайт и выберите параметр «Страницы ошибок». Там, найдите код состояния 404, щелкните правой кнопкой мыши и перейдите к «Редактировать настройки функций». затем вы можете выбрать «Пользовательские страницы ошибок» и изменить «Тип пути» на URL «Выполнить URL», чтобы выполнить некоторую перезапись, или страницу перенаправления по умолчанию для чего-либо еще. Укажите свой URL как относительное значение, и теперь оно должно перенаправлять на этот URL при 404 ошибках.

Редактировать: Сделал небольшое копание, в случаях, если эта конфигурация может быть заблокирована, если вы запустите следующую команду, она должна снять блокировку:

%windir%\System32\inetsrv\appcmd unlock config -section:system.webserver/httperrors

Как только это будет сделано, вы можете правильно редактировать URL.

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