2008-11-05 5 views
16

У меня есть сайт, на котором я использую CustomErrors в файле web.config, чтобы указать пользовательскую страницу ошибок, и это работает нормально. Пользовательская страница 404 также указана в конфигурации IIS (потому что, если это не так, я не получаю свою страницу 404).ASP.NET aspxerrorpath в URL

Но у меня есть логика, которая срабатывает, если пользователь получает 404, который просматривает их запрошенный URL-адрес и, если необходимо, делает предложение навигации. Эта логика основывается на значении aspxerrorpath. На моем компьютере разработки URL-адрес aspxerror правильно добавлен к URL-адресу: http://localhost:3092/FileNotFound.aspx?aspxerrorpath=/badpage.aspx, но на моем тестовом сайте отсутствует URL-адрес aspxerrorpath, поэтому вся моя пользовательская логика обойдена, и мои предложения не Работа. Я не уверен, что это проблема конфигурации IIS или что-то еще. Веб-сервер - это Windows Server 2008 с IIS 7.

Любые мысли?

Большое спасибо.

+0

На сервере перенаправляется ли он на FileNotFound.aspx или же URL-адрес остается неизменным при возникновении ошибки? Есть ли значение для defaultRedirect в web.config? Если вы удалите значения в этом элементе, изменится ли поведение? –

+0

Спасибо, Джон. Дополнительная информация: На сервере URL остается неизменным (он не переходит в FileNotFound.aspx). В файле web.config значения defaultRedirect отсутствуют. – theog

ответ

18

Параметр aspxerrorpath передается, если ошибка была поймана .NET (и используется страница с ошибкой, указанная в web.config). Это происходит, если вы используете веб-сервер разработки, или если IIS настроен не проверять наличие файла.

Если IIS проверяет, что файл существует, то используется пользовательский ошибка настроен в IIS, и запрашиваемый URL включен в строку запроса, как что-то вроде

http://example.com/FileNotFound.aspx?404;http://example.com/badpage.aspx

6

Вы, возможно, придется добавить ниже в web.config

<customErrors mode="On"> 
    <error statusCode="404" redirect="~/error404.aspx" /> 
</customErrors> 

для получения дополнительной информации проверки: http://geekswithblogs.net/shahed/archive/2007/10/23/116278.aspx

Update: Мы можем использовать функциональность IIS7 для отображения пользовательских страниц ошибок 404 с использованием HTTPModules, как описано в http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx.

+0

Спасибо Рамешу. У меня есть этот набор в файле web.config. – theog

+0

@theog: Пожалуйста, дайте мне знать, на какой странице, которая не существует, вы пытаетесь получить доступ к тестовой машине. Связано ли это с рабочим процессом aspnet? Кроме того, посмотрите 404 HttpModule, описанный в http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx – Ramesh

 Смежные вопросы

  • Нет связанных вопросов^_^