Разное

Customerrors в файле config сервера: Создание настраиваемых страниц отчетов об ошибках — ASP.NET

Создание настраиваемых страниц отчетов об ошибках — ASP.NET

  • Статья
  • Чтение занимает 7 мин

В этой статье описывается, как использовать код Microsoft Visual Basic .NET для перехвата и реагирования на ошибки при их возникновении в ASP.NET.

Исходная версия продукта: Visual Basic .NET, ASP.NET
Исходный номер базы знаний: 308132

Аннотация

ASP.NET улучшены параметры обработки ошибок из традиционных страниц Active Server (ASP). В ASP.NET вы можете обрабатывать ошибки на нескольких разных уровнях в приложениях.

Новые функции в ASP.NET

ASP.NET предлагает несколько дополнительных способов обработки ошибок и реагирования на них. В традиционной ASP ошибки On Error Resume Next обрабатываются с помощью (или try-catch блоков в JScript). Кроме того, при запуске служб IIS ASPError объект используется для создания настраиваемой страницы отчетов об ошибках. Однако эти подходы имеют свои ограничения.

ASP.NET предоставляет несколько уровней, на которых можно обрабатывать ошибки, которые могут возникнуть при запуске ASP.NET приложения. ASP.NET предоставляет три основных метода, которые позволяют перехватывать ошибки и реагировать на них при их возникновении: Page_Error событие, Application_Error событие и файл конфигурации приложения (Web.config).

В этой статье показано, как использовать эти новые функции в ASP.NET приложения. Хотя в этой статье описывается, как предоставить настраиваемые страницы ошибок и общие отчеты об ошибках, связанные непосредственно с ASP.NET, try-catch-finally в этой статье не описываются другие подходы к обработке ошибок, такие как блок и система исключений среды CLR.

Использование события Page_Error

Это Page_Error событие позволяет перехватывать ошибки, происходящие на уровне страницы. Вы можете отобразить сведения об ошибке (как в примере кода для отслеживания), либо занося событие в журнал или выполнив другое действие.

Примечание.

В этом примере подробные сведения об ошибках отображаются в браузере только в демонстрационных целях. При отображении подробных сведений для конечного пользователя приложения, особенно при работе приложения в Интернете, следует быть осторожными. Более подходящим действием будет отображение сообщения пользователю с уведомлением о том, что произошла ошибка, а затем запись конкретных сведений об ошибке в журнал событий.

В этом примере создается исключение NULL, которое вызывает ошибку в событии Page_Load . Выполните следующие действия, чтобы создать начальную страницу, которая будет тестировать Page_Error событие.

  1. Выполните следующие действия, чтобы добавить в проект новый файл с именем PageEvent. aspx :

    1. Откройте Visual Studio .NET.
    2. В Обозреватель решений щелкните правой кнопкой мыши узел проекта, наведите указатель на пункт «Добавить» и
      выберите команду «Добавить веб-форму».
    3. В текстовом поле « Имя» введите PageEvent.aspx и нажмите кнопку «Открыть».
  2. Добавьте следующий код в PageEvent.aspx:

    <%@ Page Language="vb"%>
    <script runat=server>
        Sub Page_Load(Sender as object, e as EventArgs)
           throw(new System.ArgumentNullException())
        End Sub
        Sub Page_Error(Sender as object, e as EventArgs)
           Dim objErr as Exception = Server.GetLastError().GetBaseException()
           Dim err as String = "<b>Error Caught in Page_Error event</b><hr><br>" & _
                               "<br><b>Error in: </b>" & Request.Url.ToString() & _
                               "<br><b>Error Message: </b>" & objErr. Message.ToString() & _
                               "<br><b>Stack Trace:</b><br>" & _objErr.StackTrace.ToString()
           Response.Write(err.ToString())
           Server.ClearError()
        End Sub
    </script>
    
  3. В меню «Файл » щелкните «СохранитьPageEvent.aspx».

  4. Щелкните страницу правой кнопкой мыши и выберите команду « Просмотреть в браузере», чтобы запустить страницу. Обратите внимание, что ошибка возникает и сообщается в соответствии со спецификациями кода.

Примечание.

Вы можете заметить, что код выполняет вызов .Server.ClearError Это предотвращает продолжение обработки Application_Error события.

Использование события Application_Error

Аналогично событию Page_Error , событие можно использовать Application_Error для перехвата ошибок, происходящих в приложении. Из-за области приложения события можно занося в журнал сведения об ошибках приложения или обрабатывать другие ошибки на уровне приложения, которые могут возникнуть.

Пример для отслеживания основан Page_ErrorPage_Load на предыдущем примере кода события и будет срабатывать, если ошибка в событии не была захвачена в событии Page_Error . Событие Application_Error указывается в файле Global.asax приложения. Для простоты действия, описанные в этом разделе, создают новую страницу, на которой создается исключение, Application_Error перехватываются ошибки в случае файла Global.asax и записываются ошибки в журнал событий. Ниже показано, как использовать Application_Error событие.

  1. Добавьте в проект новый файл с именем AppEvent.aspx .

  2. Добавьте следующий код в AppEvent.aspx:

    <script language=vb runat="server">
         Sub Page_Load(Sender as object, e as EventArgs)
             throw(new ArgumentNullException())
         End Sub
    </script>
    
  3. В меню «Файл » щелкните «СохранитьAppEvent. aspx».

  4. Добавьте событие Application_Error в файл Global.asax , Page_Load чтобы перехватывать ошибку, вызываемую в случае страницы AppEvent.aspx . Обратите внимание, что для ImportsSystem.Diagnostics использования журнала событий необходимо добавить инструкцию для пространства имен в Global.asax .

    Добавьте следующий код в файл Global.asax :

    Imports System.Diagnostics
    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        Dim objErr As Exception = Server.GetLastError().GetBaseException()
        Dim err As String = "Error Caught in Application_Error event" & _
                                System.Environment.NewLine & _
                                "Error in: " & Request.Url.ToString() & _
                                System.Environment.NewLine & _
                                "Error Message: " & objErr.Message.ToString() & _
                                System.
    Environment.NewLine & _ "Stack Trace:" & objErr.StackTrace.ToString() EventLog.WriteEntry("Sample_WebApp", err, EventLogEntryType.Error) Server.ClearError() additional actions... End Sub
  5. Сохраните файл Global.asax .

  6. В Visual Studio .NET в меню » Сборка » щелкните » Сборка».

  7. Щелкните страницу правой кнопкой мыши и выберите пункт »

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

Использование Web.config файла

Если не вызвать Server.ClearErrorPage_ErrorApplication_Error или не перехватывать ошибку в событии или событии, <customErrors> ошибка обрабатывается на основе параметров в разделе Web. configфайла. В этом <customErrors> разделе можно указать страницу перенаправления как страницу ошибки по умолчанию (defaultRedirect) или указать определенную страницу на основе кода ошибки HTTP. Этот метод можно использовать для настройки сообщения об ошибке, которое получает пользователь.

Если возникает ошибка, которая не перехватывается ни на любом из предыдущих уровней приложения, отображается эта настраиваемая страница. В этом разделе показано, как изменить файл Global.asax так, чтобы он Server.ClearError никогда не вызывались. В результате ошибка обрабатывается в файлеWeb.configкак последняя точка для перехвата ошибки.

  1. Откройте файл Global.asax из предыдущего примера.

  2. Закомментировать Server.ClearError строку, чтобы убедиться, что ошибка возникает вWeb.config файле.

  3. Сохраните изменения в Global.asax. Теперь код должен выглядеть примерно так:

     Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
         Dim objErr As Exception = Server.
    GetLastError().GetBaseException() Dim err As String = "Error Caught in Application_Error event" & _ System.Environment.NewLine & _ "Error in: " & Request.Url.ToString() & _ System.Environment.NewLine & _ "Error Message: " & objErr.Message.ToString() & _ System.Environment.NewLine & _ "Stack Trace:" & objErr.StackTrace.ToString() EventLog.WriteEntry("Sample_WebApp", err, EventLogEntryType.Error) Server.ClearError() additional actions... End Sub
  4. Добавьте следующий код в раздел <customErrors> , чтобы перенаправить пользователя на пользовательскую страницу:

    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    

    Примечание.

    Необходимо изменить путь к файлу в атрибуте

    defaultRedirect , чтобы он ссылались на соответствующие имена веб-сервера и приложения.

  5. Так как ошибки, захваченные на этом уровне, отправляются на страницу ошибок по умолчанию, необходимо создать страницу ошибок с именем ErrorStatus.htm. Помните, что этот метод используется для управления тем, что предоставляется пользователю, поэтому в этом примере используется.htmстраницы ошибок. Добавьте следующий код вErrorStatus.htm:

    <HTML>
        <HEAD>
            <TITLE></TITLE>
            <META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
        </HEAD>
        <BODY>
             <b>Custom Error page!</b>
             <br>
             You have been redirected here from the <customErrors> section of the
             Web.config file.
        </BODY>
    </HTML>
    
  6. Чтобы протестировать код, сохраните файлы, создайте проект, а затем просмотрите AppEvent.aspx в браузере. Обратите внимание, что при возникновении ошибки вы будете перенаправлены на страницу ErrorStatus. htm. Хотя вы можете ссылаться defaultRedirect<customErrors> на страницу ошибки по умолчанию в значении атрибута в разделе, можно также указать определенную страницу для перенаправления на основе кода ошибки HTTP, который вызывается. Дочерний <error> элемент допускает этот параметр. Например:

    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
        <error statusCode="404" redirect="filenotfound.htm"/>
    </customErrors>
    

Примечание.

Страница, указанная в defaultRedirect разделе <customErrors> , является.htmфайла . Если вы планируете GetLastError использовать страницу ASPX ( Page_ErrorApplication_Error как это делается и в примерах), необходимо сохранить исключение в переменной сеанса или другом подходе перед перенаправлением.

Обратите внимание, что <customErrors> раздел содержит атрибут mode , для которого задано значение On . Атрибут mode используется для управления тем, как происходит перенаправление ошибок. Например, если вы разрабатываете приложение, скорее всего, вы хотите просмотреть фактические ASP.NET сообщения об ошибках и не хотите перенаправлять их на более управляемую страницу ошибок. Атрибут mode включает следующие параметры:

  • On: необработанные исключения перенаправляют пользователя на указанную страницу defaultRedirect . Он mode используется в основном в рабочей среду.

  • Off: пользователи получают сведения об исключении и не перенаправляются на страницу defaultRedirect . Это mode используется в основном при разработке.

  • RemoteOnly: сведения об исключении получают только пользователи, которые получают доступ к сайту на локальном компьютере (с помощью localhost). Все остальные пользователи перенаправляются на страницу defaultRedirect . Этот режим используется в основном для отладки.

Устранение неполадок

При установке по умолчанию в Windows ASP.NET выполняет код веб-приложения в рабочем процессе. Для удостоверения этого процесса по умолчанию используется непривилегированная локальная учетная запись, которая называется учетной записью ASPNET . В бета-версиях ASP.NET удостоверением процесса была система— мощная административная учетная запись с множеством привилегий на компьютере.

При установке по умолчанию в Windows Server (IIS) ASP.NET выполняет код веб-приложения в рабочем процессе. Удостоверение этого процесса по умолчанию используется для ограниченной учетной записи с именем NetworkService.

Дополнительные сведения об этом изменении и о том, как оно может влиять на выполнение кода в этой статье, а также другой код, для которого могут потребоваться дополнительные права доступа, & см. в рекомендациях по шаблонам.

Ссылки

  • Обработка и создание исключений

  • Метод HttpServerUtility. ClearError

  • Домашняя страница .NET

PROИТ: Runtime Error в SharePoint 2013

Runtime Error в SharePoint 2013 — как показать Detailed errors (подробный текст ошибки)

При разработке приложений, веб-частей и рабочих процессов в SharePoint всегда хотелось бы видеть детальный текст любой произошедшей ошибки, а не искать ее в слепую. Поэтому на сервере для разработки желательно включить режим детализированного отображения ошибок. Однако, если следовать стандартной инструкции, включить этот режим не получится. Необходимо это сделать не только в стандартном web.config файле, но и в конфигурационном файле в спецпапке Layouts.
Рассмотрим подробнее, как это сделать…


По умолчанию этот режим отключен и отображается Runtime Error с предложением отключить режим customerrors:

Server Error in ‘/’ Application.

Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed.

Details: To enable the details of this specific error message to be viewable on the local server machine, please create a <customErrors> tag within a «web.config» configuration file located in the root directory of the current web application. This <customErrors> tag should then have its «mode» attribute set to «RemoteOnly». To enable the details to be viewable on remote machines, please set «mode» to «Off».

<!— Web.Config Configuration File —>

<configuration>
    <system.web>
        <customErrors mode=»RemoteOnly»/>
    </system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the «defaultRedirect» attribute of the application’s <customErrors> configuration tag to point to a custom error page URL.

<!— Web.Config Configuration File —>

<configuration>
    <system.web>
        <customErrors mode=»On» defaultRedirect=»mycustompage.htm»/>
    </system.web>
</configuration>


Следуя предложенным инструкциям, заходим в IIS, находим сайт SharePoint и переходим по кнопке Error Pages. По ссылке Edit Feature Settings открываем окно «Edit Error Pages Settings» и выбираем режим «Detailed errors»:

Сохраняем по кнопке ОК. Если сейчас открыть страницу с ошибкой, то все равно будет отображаться Runtime Error.
Начинаем проверять, что не так. Заходим в папку сайта SharePoint (кнопка Explore в IIS), находим файл web.config:

Находим блок произвольных ошибок (CustomErrors) и видим, что режим задан правильно:
<customErros mode=»Off» />

Однако, помимо этого файла SharePoint использует конфигурационные файлы в папках шаблонов и макетов. Необходимо задать такой же режим и там.
Для этого переходим в папку:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\LAYOUTS

Для SharePoint 2013 — папка 15
Для SharePoint 2010 — папка 14
WWS 3.0 была папка 12

Находим там также файл web.config:

Открываем его и видим, что режим детализированных ошибок отключен:

Меняем On на Off и сохраняем.
После сохранения можно обновлять страницу с ошибкой и получим долгожданный детализированный ее текст:

Если не получилось, попробуйте найти web.config в папке с другим номером и исправить его.


(с) Ella S.

Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

c# — Эту ошибку в web.config

я пытаюсь исправить. Я загрузил папку своего проекта на веб-хостинг. Мой проект запускается локально, но показывает ошибку времени выполнения в файле we.config. Я не знаю, как это исправить. ошибка. Я добавил строку в system.web, но проблема все еще не устранена. Я удалил страницу default.aspx сейчас. Эта проблема связана с отсутствием страницы по умолчанию.

 Описание: Ошибка приложения на сервере. Текущий обычай
    настройки ошибок для этого приложения предотвращают детали ошибки приложения
    от удаленного просмотра (из соображений безопасности). Зато можно было посмотреть
    браузерами, работающими на локальном сервере.
Сведения: чтобы можно было просмотреть сведения об этом конкретном сообщении об ошибке.
     на удаленных машинах создайте тег  в "web.config"
    файл конфигурации, расположенный в корневом каталоге текущего веб-приложения.
    Этот тег  должен иметь атрибут «mode», установленный на «Off».
 

web.config

 
  <конфигурация>
   
    
Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <система.веб> Режим <компиляция отладки="true" targetFramework="4.5" /> <страницы> <пространства имен> <элементы управления> <режим аутентификации="Нет"> <профиль defaultProvider="DefaultProfileProvider"> <провайдеры> Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> <провайдеры> <провайдеры> 0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> <провайдеры> <параметры> <значение параметра="v11.0" />

Ошибка сервера в приложении ‘/’ Web.config

Имтиаз Сами 1 Точка репутации

2022-08-04T18:02:00.54+00:00

Привет
Мне нужно решение этой проблемы. Если у кого-то есть это решение, пожалуйста, ответьте на него.

Ошибка выполнения
Описание: На сервере произошла ошибка приложения. Текущие пользовательские настройки ошибок для этого приложения предотвращают удаленный просмотр сведений об ошибке приложения (по соображениям безопасности). Однако его могут просматривать браузеры, работающие на локальном сервере.

Подробности: Чтобы детали этого конкретного сообщения об ошибке были видны на удаленных компьютерах, создайте тег в файле конфигурации «web.config», расположенном в корневом каталоге текущего веб-приложения. Этот тег должен иметь атрибут «mode», установленный на «Off».





Примечания. Текущую страницу ошибки, которую вы видите, можно заменить пользовательской страницей ошибки, изменив атрибут defaultRedirect тега конфигурации приложения, чтобы он указывал на URL пользовательской страницы ошибок.





.NET-среда выполнения

.NET-среда выполнения

.NET: Технологии Microsoft, основанные на программной среде .NET. Время выполнения: Период времени, в течение которого программа выполняется на компьютере.

961 вопрос

ASP.NET

ASP.NET

Набор технологий в .NET Framework для создания веб-приложений и веб-служб XML.

1215 вопросов

Войдите, чтобы подписаться

0 {count} голосов


Войдите, чтобы комментировать

Сортировать по: Самый полезный

Самые полезные Самые новые Самые старые

  1. Лаборатории блогов 1 Точка репутации

    2022-08-04T21:46:57. 887+00:00

    CDN-af.feednews.com — веб-агрегатор каналов, который собирает и распространяет контент из более чем 1000 каналов RSS и Atom. Контент впоследствии отображается на веб-сайте в удобном для пользователя виде.
    https://bloglabs360.com/the-best-news-website-ever-cdn-af-feednews-com/

    0 Без комментариев


    Войдите, чтобы комментировать

  2. Лань Хуан-MSFT 9 506 Очки репутации • Сотрудник Microsoft

    2022-08-05T07:39:42.003+00:00

    Привет @Imtiaz Sami ,

    Подробности: чтобы детали этого конкретного сообщения об ошибке можно было просмотреть на удаленных компьютерах, создайте тег в файле конфигурации «web.config», расположенном в корневом каталоге текущего веб-приложения. Этот тег должен иметь атрибут «mode», установленный на «Off».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *