Подтвердить что ты не робот

Вопросы/вопросы базовой настройки Elmah

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

Создайте новое приложение 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, показывает это объект, требующий либо" string ", либо" IDicationary" в любом из двух публичных конструкторов.

Я запускаю Windows Vista x64 с VS 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

Итак, где я перепутался?

~ - = Mike = - ~

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

HTHS, Чарльз

Ответ 3

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

Ответ 4

Проблема заключается в этой строке

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

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

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