Вопросы/вопросы базовой настройки 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 = - ~
Ответы
Ответ 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">