Elmah работает в MVC, но не в Web API

У меня есть работающие контроллеры на стороне веб-приложения ELMAH, но я не могу получить исключения, зарегистрированные на стороне веб-API.

Моя настройка:

WebApiConfig.cs:

public static void Register(HttpConfiguration config)
{
    config.Services.Add(typeof(IExceptionLogger), new ElmahExceptionLogger());

    // Web API routes
    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

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>
....
<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="elmah.mvc.disableHandler" value="false" />
    <add key="elmah.mvc.disableHandleErrorFilter" value="false" />
    <add key="elmah.mvc.requiresAuthentication" value="false" />
    <add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
    <add key="elmah.mvc.allowedRoles" value="*" />
    <add key="elmah.mvc.allowedUsers" value="*" />
    <add key="elmah.mvc.route" value="elmah" />
    <add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
</appSettings>
....
<modules>
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
  <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
  <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
....
<httpModules>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
....
<elmah>
    <errorMail key="elmahMail" from="noreply@mydomain.com" to="me@mydomain.com" cc="" subject="DEV EMP Exception" async="true" smtpPort="25" smtpServer="smtp.mydomain.com" userName="" password="" />
</elmah>

Я пробовал с этим вкл и выкл:

GlobalConfiguration.Configuration.Filters.Add(new ElmahHandleErrorApiAttribute());

Обычно установка пакета Elmah.Mvc и пакетов Elmah.Contrib.WebApi плюс добавление:

config.Services.Add(typeof(IExceptionLogger), new ElmahExceptionLogger());

Линия включает Elmah для веб-API просто отлично, но он больше не работает.

1 ответ

Ответ состоял в том, что он работал все время. Элма раньше срабатывал на 404. Это уже не так. Я тестировал, пробуя маршрут, которого не было.

Другие вопросы по тегам