Как я могу получить страницу пользовательской ошибки для trace.axd в MVC3?

89
10

В моем приложении MVC3 отображаются пользовательские страницы ошибок для 403, 404 и 500 кодов состояния, но просмотр на trace.axd отображает следующий YSOD:


    Server Error in '/' Application.

Trace Error

Description: Trace.axd is not enabled in the configuration file for this application. Note: Trace is never enabled when <deployment retail=true />

Details: To enable trace.axd, please create a <trace> tag within the configuration file located in the root directory of the current web application. This <trace> tag should then have its "enabled" attribute set to "true".

<configuration>
<system.web>
<trace enabled="true"/>
</system.web>
</configuration>


Итак, у меня отключена трассировка, что хорошо, но почему страница 500 не отображается, так как это 403 возвращается с сервера? Я был бы достаточно счастлив с 404, 403 или 500 действительно - до тех пор, пока это не уродливый желтый экран!


Изменить: я получал 500 вместе с YSOD при работе на локальном хосте, но на самом деле это 403 на сервере, который ближе к тому, что я ожидал, но по-прежнему нет настраиваемой страницы ошибок. Это также немного другая стандартная страница ошибки на сервере:


Server Error in '/' Application.

Trace Error

Description: The current trace settings prevent trace.axd from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable trace.axd to be viewable on remote machines, please create a <trace> tag within the configuration file located in the root directory of the current web application. This <trace> tag should then have its "localOnly" attribute set to "false".

<configuration>
<system.web>
<trace localOnly="false"/>
</system.web>
</configuration>

спросил(а) 2021-01-19T23:18:27+03:00 5 месяцев назад
1
Решение
63

Удаление IgnoreRoute, предложенное @Cosmologinaut, не сработало для меня, и, как он говорит, чувствует себя не так. Я нашел лучшее решение, которое должно удалить обработчик HTTP трассировки в файле Web.config:


  <system.webServer>
<!-- remove TraceHandler-Integrated - Remove the tracing handlers so that navigating to /trace.axd gives us a
404 Not Found instead of 500 Internal Server Error. -->
<handlers>
<remove name="TraceHandler-Integrated" />
<remove name="TraceHandler-Integrated-4.0" />
</handlers>
</system.webServer>

Переход на /trace.axd теперь дает нам 404 Not Found вместо 500 Internal Server Error.

ответил(а) 2021-01-19T23:18:27+03:00 5 месяцев назад
63

Поскольку ответов не было, я спросил @shanselman в Twitter, который предложил <deployment retail = "true" /> решить его, но он все равно вернул тот же YSOD.

В конце концов я решил это, удалив маршруты. IgnoreRoute ( "{resource}.axd/{* pathInfo}" ); из конфигурации маршрутизации. Не совсем правильно, но он работает.

ответил(а) 2021-01-19T23:18:27+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема