Ответ 1
Вам также необходимо заполнить раздел конфигурации system.webServer для IIS 7+. См. этот вопрос.
Я пытаюсь использовать elmah для своего MVC-приложения, и я выполнил шаги в wiki: http://code.google.com/p/elmah/wiki/MVC, но даже поэтому при попытке получить доступ к myapp/elmah.axd странице:
404 - Файл или каталог не найдены.
Кто-нибудь может мне помочь?
OBS: Моя версия IIS - 7.5
Если это помогает, я публикую соответствующие разделы моего 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>
...
</connectionStrings>
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
<system.web>
...
<httpHandlers>
<remove verb="*" path="*.asmx" />
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
<add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
И на моем Global.asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
...
Вам также необходимо заполнить раздел конфигурации system.webServer для IIS 7+. См. этот вопрос.
Здесь хороший способ использования ELMAH в MVC здесь, который не использует axd
, а контроллер и пользовательский ElmahActionResult
.
Попробуйте добавить это в свой файл web.config в
<system.webServer>
<handlers>
<remove name="ErrorLog" />
<remove name="ErrorMail" />
<remove name="ErrorFilter" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</handlers>
</system.webServer>
Чтобы помочь другим испытать то, что @zanona столкнулось с тем, что произошло в 2010 году (см. комментарии к ответу @hunter выше), следующее изменение зафиксировало для меня сегодня ту же самую "Ошибка HTTP 500.19 - Внутренняя ошибка сервера". Обратите внимание, что размещение тегов конфигурации в ответе @hunter является причиной ошибки @zanona. Те теги @hunter, упомянутые, относятся к заголовку модулей, а не к обработчикам!
<modules>
<remove name="ErrorLog" />
<remove name="ErrorMail" />
<remove name="ErrorFilter" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</modules>
Вышеупомянутое исправление устраняет для меня ту же самую ошибку "Ошибка конфигурации" - "Отсутствует требуемый атрибут" путь ", который впервые сообщил @zanona. Эта ошибка возникла в результате того, что теги в группе обработчиков, как ожидается, будут структурированы, а его переупорядоченные теги, очевидно, не имеют атрибута path (потому что они там не принадлежали, а скорее принадлежат к тегу модулей!). Теперь, какие теги в разделе обработчиков должны выглядеть так:
<handlers>
<add name="elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</handlers>
Обратите внимание, что атрибут path присутствует там? Ах!
Благодаря @hunter и @zanona, потому что они поставили меня на путь, который мне нужен, чтобы решить мою проблему.
(ПРИМЕЧАНИЕ. Я попытался отредактировать исходный пост из @hunter выше, чтобы внести исправления, но рецензирование было медленным, и я подумал, что буду держать этот ответ здесь, чтобы помочь кому-то, кто сталкивается с тем же вызовом в то же время. что редактирование принято, мы могли бы удалить этот пост.)