2009-12-01 6 views
2

Вот мой раздел web.config customErrors (вы заметите, что я переключил режим на «Вкл.», Чтобы я мог видеть перенаправление на моем локальном хосте):ASP.Net частично игнорирует раздел пользовательских ошибок в web.config

<customErrors defaultRedirect="~/Application/ServerError.aspx" mode="On" redirectMode="ResponseRewrite"> 
     <error statusCode="403" redirect="~/Secure/AccessDenied.aspx" /> 
    </customErrors> 

и вот код, который бросает:

 Catch adEx As AccessDeniedException 

       Throw New HttpException(DirectCast(HttpStatusCode.Forbidden, Integer), adEx.Message) 

     End Try 

и вот что я в конечном итоге с:

alt text

Это не моя красивая страница AccessDenied.aspx, но это запрещенная страница с ошибками, так что, по крайней мере, я знаю, что мой бросок работает.

Я удалил запись для 403 в IIS (7.0) как отчаянную последнюю попытку и неудивительно, что не имело никакого значения.

У меня кончились идеи, поэтому любые предложения будут с благодарностью оценены!

+0

Вы когда-нибудь находили решение? – Peter

ответ

0

Фактически, ваша страница aspx может не выполняться вообще.
Перейти к IIS. Перейдите к свойствам веб-сайта по умолчанию. Нажмите вкладку Home Directory Нажмите кнопку конфигурации. Теперь проверьте, зарегистрирована ли страница .aspx.

+0

Можете ли вы рассказать мне, что именно вы просите меня проверить? На моей машине dev у меня есть IIS 7.0 на Vista, и интерфейс IIS изменился за все свое признание, поэтому ваши указания не сопоставляются с тем, что я вижу в IIS. – user129345

+0

Просто добавьте (пока я не уверен, но я подозреваю, что вы можете вывести что-то из контекста из ошибки), этот вопрос находится в контексте существующего веб-приложения asp.net реального предприятия. Я добавляю дополнительную защиту и не могу получить перенаправление на страницу пользовательских ошибок для работы 403. Сайт отлично работает, кроме того, что когда это исключение выбрасывается (как это будет в определенных исключительных обстоятельствах), оно не будет на странице с ошибкой (AcccessDenied.aspx) – user129345

+0

Спасибо за исправление моих предположений. Подобные ошибки обычно появляются, когда пользователи пытаются использовать страницы .asp в контексте сайта .net. IIS жалуется на ту же ошибку, и для обработки файлов .asp необходимо создать дополнительную конфигурацию. В вашем случае я, возможно, попытаюсь создать простую страницу .html и попробовать перенаправить на это и посмотреть, что произойдет. –

0

Необходимо указать existingResponse="PassThrough" в разделе system.webServer элемента httpErrors.

<configuration> 
    <system.webServer> 
     <httpErrors existingResponse="PassThrough" /> 
    </system.webServer> 
</configuration> 
+0

Хорошо, что меняет вещи. Теперь я получаю ошибку 500! – user129345

+0

Не то, что вы изначально выложили. По-прежнему все равно получается ошибка 500. – user129345

+0

не работал для меня :( –

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