Подтвердить что ты не робот

Формирование пользовательских 404 страниц для страниц в URL-маршрутизации

Платформа кодирования ASP.NET 4.0 WebForms на IIS7.5

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

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

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

4b9b3361

Ответ 1

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

Если ваш веб-сервер 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 в Блокноте. Запустите Блокнот как администратор, если у вас возникли проблемы.

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

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

<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">

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

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

Ответ 2

Предполагая, что вы еще этого не сделали...

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

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

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

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