Где и как определить ‹customErrors mode="on"› для моего веб-приложения asp.net MVC 3

Я хочу установить для пользовательской ошибки значение true, чтобы пользователи не могли просматривать подробную информацию о моем приложении. Но я не могу найти, где я должен написать это <customErrors mode="on">; это должно быть в web.config или в web, debug.config или еще где?

BR


person john Gu    schedule 15.02.2012    source источник


Ответы (3)


Исходя из моего опыта, мы должны включить пользовательскую ошибку в режиме выпуска и отключить ее в режиме отладки. Чтобы сделать это автоматически, мы можем использовать преобразование web.config, как в следующем примере.

Web.Debug.config

Этот параметр позволит веб-серверу отображать желтую страницу ASP.NET, содержащую полезную информацию об ошибках.

<customErrors mode="Off" xdt:Transform="Replace" />

Web.Release.config

С другой стороны, мы не хотим, чтобы пользователь знал о технических ошибках. Мы должны использовать пользовательскую страницу ошибок вместо желтой страницы ASP.NET.

<customErrors mode="On" xdt:Transform="Replace" />
person Soul_Master    schedule 04.11.2012
comment
Почему не RemoteOnly? Тогда вам не придется использовать XML-преобразование, а разработчики смогут видеть ошибки при просмотре сайта на веб-сервере. - person Rudey; 06.07.2017
comment
Иногда просто не удобно просматривать сайт с веб-сервера? (Не то, чтобы ваша точка зрения не заслуживает внимания..) - person Caius Jard; 20.12.2017
comment
Возможно, следует указать, что узел <customErrors должен существовать в той или иной форме в веб-конфигурации, чтобы быть xdt:Transform="Replace"d. Если в web.config нет узла <customErrors, то добавление этих строк в web.Release.config не будет вызвать добавление узла. Используйте xdt:Transform="Insert", если в web.config вообще нет узла <customErrors и вы хотите, чтобы преобразование добавило его - person Caius Jard; 20.12.2017

Это будет зависеть, но обычно должно быть в файле Web.config.

Web.Debug.config и Web.Release.config (и другие варианты конфигурации) используются при развертывании приложения. Когда вы выполняете операцию публикации, преобразование применяется к вашему файлу Web.config во время развертывания, что означает, что вы можете применить определенные параметры конфигурации для отладки, выпуска и других настроенных вами конфигураций.

Если вы обычно не выполняете операцию публикации во время разработки, вам нужно будет применить этот параметр к файлу Web.config, чтобы он вступил в силу.

См. http://msdn.microsoft.com/en-us/library/dd465318.aspx для получения дополнительных сведений о преобразовании файла Web.config.

См. http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx для примера добавления элемента customErrors в файл Web.config.

person devdigital    schedule 15.02.2012
comment
У Скотта Хансельмана есть отличное видео на канале 9 о развертывании и о том, как эффективно использовать отладочную и выпускную версии web.config. channel9.msdn.com/Events/MIX/MIX10/FT14 - person The Muffin Man; 15.02.2012
comment
я определяю ‹customErrors mode=on /› в web.config перед закрытием тега ‹/configuration› следующим образом: — ‹/system.webServer› ‹customErrors mode=on /› ‹/configuration›, но если возникает ошибка, то будет отображаться полное сообщение об ошибке (не пользовательская ошибка)...!!! - person john Gu; 15.02.2012
comment
Поместите элемент ‹customErrors› под тег ‹system.web›. Вам также необходимо указать defaultRedirect либо для действия контроллера, либо, предпочтительно, для статического html-файла. В качестве альтернативы, многие люди отключили пользовательские ошибки, а затем обработали маршрутизацию в обработчике ошибок приложения. См. stackoverflow.com/questions/6733064/ для получения подробной информации. - person devdigital; 15.02.2012
comment
спасибо за ваш ответ; я вставляю ‹customErros› под ‹system.web› как в ; ‹system.web› ‹customErrors mode= On › ‹/customErrors›. но все равно будет отображаться подробная ошибка. - person john Gu; 15.02.2012
comment
Вы установили атрибут defaultRedirect так, чтобы он указывал на действие или статический HTML-файл? Подробности смотрите по ссылке, которую я указал в комментарии. - person devdigital; 15.02.2012

Вставьте в Web.config и создайте страницу ошибки для перенаправления. В MVC у вас есть HandleErrorAttribute, отметьте его в классе для обработки непредвиденной ошибки, зарегистрируйте его и выдайте страницу ошибки. Пользовательская ошибка — это страница по умолчанию для конкретной ошибки с известным кодом состояния.

<system.web>
    <customErrors mode="On">
      <error statusCode="404" redirect="/PageNotFound?" />
    </customErrors>
</system.web>
person toannm    schedule 25.03.2015