Основные вопросы по настройке Elmah / проблемы

StackOverflow https://stackoverflow.com/questions/960234

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

<% выбрасывает новое исключение ("бла-бла");%> Размещайте контент здесь.

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

Добавьте 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 с версией 2008.Установите разрешение для App_Data для всех в качестве Co_Owner.

Тот самый http://localhost:xxxx/elmah.axd страница действительно появляется и не показывает ошибок.Когда я снова захожу на страницу "О программе", я по-прежнему вижу желтый экран, а elmah.axd по-прежнему не показывает ошибок в папке app_data.

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

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

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

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

Так в чем же я напортачил?

~-=Майк=-~

Это было полезно?

Решение

Проверьте, присутствует ли 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>

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

Другие советы

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

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

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

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

Привет, Чарльз

Я установил из 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.

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

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

Замените его на

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top