【发布时间】:2025-11-21 11:30:02
【问题描述】:
我有 ELMAH 工作网络应用程序端控制器,但我无法在 Web 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 }
);
}
网页配置:
<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());
line 为 Web API 打开 Elmah 就好了,但它不再工作了。
【问题讨论】:
-
只要你也安装了 Elmah.Contrib.WebApi,你的配置看起来就很好。你能把你的项目放在我可以自己尝试的地方吗?
-
很遗憾我无法发布我的项目。
-
也许尝试在空白项目中重新创建并上传?
-
我解决了。答案是它一直在工作。 Elmah 曾经在 404 上触发。现在情况已不再如此。我正在尝试一条不存在的路线进行测试。
标签: asp.net-web-api elmah