Основные вопросы по настройке Elmah - PullRequest
21 голосов
/ 06 июня 2009

Я не считаю это простым в настройке; либо в конфигурации настройки отсутствует шаг, либо он работает неправильно, либо я на самом деле не понимаю его цели. Здесь что-то определенно не так. Очевидно, проблема заключается во мне. Я просто не заставляю это работать. Вот что я сделал.

Создайте новое приложение MVC. Разместите следующее на странице About.aspx.

<% throw new Exception ("бла"); %> Разместите контент здесь.

При попадании на страницу появляется желтый экран с исключением.

Добавить elmah.dll в каталог bin.

Добавить в файл конфигурации Web.configСекций:

<sectionGroup name="elmah">
  <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
  <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
  <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
  <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>

Добавьте в раздел httpHandlers следующее:

<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

Добавить в раздел модулей:

<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>

Добавить в раздел обработчика:

<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" preCondition="integratedMode" type="Elmah.ErrorLogPageFactory, Elmah"/>

Добавить раздел elmah:

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>

Что здесь любопытно, так это то, что часть «.XmlFileErrorLog» этой строки отображается красным как ошибка ReSharper, указывающая, что она «не может разрешить символ« .ctor »», что показывает это при просмотре elmah.dll в Reflector для объекта требуется либо «строка», либо «идентификатор» в любом из двух открытых конструкторов.

Я использую Windows Vista x64 с VS 2008. Установите разрешение для App_Data всем как Co_Owner.

Страница http://localhost:xxxx/elmah.axd появляется и не показывает ошибок. Когда я снова попадаю на страницу «О программе», я все еще вижу желтый экран, и elmah.axd все еще не показывает ошибок в папке app_data.

Я заменил ошибки клиентов на и создал связанную страницу:

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm" />

Показывается пользовательская страница, но elmah.axd по-прежнему показывает «Нет ошибок». App_data еще пуст!

В качестве источника для запуска этой настройки я использовал: code.google.com/p/elmah/wiki/MVC

Так, где я запутался?

~ - = Mike = - ~

Ответы [ 4 ]

20 голосов
/ 08 июня 2009

Проверьте, присутствует ли ErrorLogModule в configuration/system.web/httpModules (используется, если вы находитесь на веб-сервере разработки) и configuration/system.webServer/modules (используется IIS7) Вот фрагмент web.config из проекта, над которым я сейчас работаю:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <httpModules>
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
        </httpModules>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="ErrorLog" />
            <remove name="ErrorMail" />
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
        </modules>
    </system.webServer>
</configuration>

Надеюсь, это поможет

11 голосов
/ 08 июня 2009

Попробуйте удалить этот раздел:

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>

Это будет означать, что Elmah настроен так, чтобы просто использовать ведение журнала в памяти по умолчанию. Это помогает при устранении неполадок, потому что вы знаете, что это не файл разрешения. Поэтому, как только вы настроите его на запись в память, вы можете настроить его на запись в XML-файл.

Возможно, вы также захотите проверить этот вопрос о стеке потока Как заставить ELMAH работать с атрибутом ASP.NET MVC [HandleError]? , на который ответил сам Атиф Азиз.

HTHS, Charles

1 голос
/ 03 января 2013

Я установил из nuget elmah и elmah on XML log, не получил ожидаемую функциональность, хотя я мог получить доступ к http://localhost/elmah.axd, но без регистрации ошибок.

Я дал разрешение на запись учетной записи IIS_IUSERS в папке APP_DATA, и она начала работать для ошибок HTTP 404 и ошибок, которые находятся за пределами инфраструктуры MVC. Но это не регистрировало исключения внутри MVC. Решением была установка пакета elmah.mvc из nuget, и он начал захватывать все исключения.

Если ваша конфигурация в порядке, просто установите пакет elmah.mvc из nuget, и он должен начать хранить журналы также внутри mvc, а не только по HTTP 404.

0 голосов
/ 12 марта 2013

Проблема в этой строке

  <customErrors mode="On" defaultRedirect="GenericErrorPage.htm">

Заменить на

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
...