【发布时间】:2014-04-18 16:04:29
【问题描述】:
我无法让 ELMAH 将错误记录到我的 AppData 文件夹中,以获取除 404 错误之外的任何异常。我不确定问题可能是什么。我猜这是因为我有<customErrors mode="RemoteOnly" defaultRedirect="~/Views/Shared/Error.cshtml">,但我已经尝试过记录HERE 并且没有任何运气。这是我的 web.config(至少对使用 ELMAH 至关重要):
<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="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
<add key="elmah.mvc.allowedRoles" value="Programmers" />
<add key="elmah.mvc.allowedUsers" value="*" />
<add key="elmah.mvc.route" value="elmah" />
</appSettings>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
<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>
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data"/>
</elmah>
这是我的FilterConfig.cs:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ElmahHandleErrorLoggerFilter());
filters.Add(new HandleErrorAttribute());
}
}
还有我的自定义 Elmah 处理程序:
public class ElmahHandleErrorLoggerFilter : System.Web.Mvc.IExceptionFilter
{
public void OnException(ExceptionContext context)
{
//Log only handled exceptions, because all others will be caught by ELMAH
if (context.ExceptionHandled)
{
ErrorSignal.FromCurrentContext().Raise(context.Exception);
}
}
}
对我可能做错了什么或缺少什么有什么想法吗?
【问题讨论】:
-
如果您删除
ElmahHandleErrorLoggerFilter,会有什么表现? -
它仍然做同样的事情。没有任何记录。
-
尝试添加
<modules runAllManagedModulesForAllRequests="true">Also have a look at this answer. -
抛出什么样的异常,在哪里?顺便说一句:1.你不需要
ElmahHandleErrorLoggerFilter和HandleErrorAttribute,因为如果disableHandleErrorFilter是false,Elmah.MVC会注入一个。 2.Error.cshtml无法从浏览器访问(尝试从浏览器访问 /Views/Shared/Error.cshtml 看看会发生什么)。您必须在 views 文件夹之外使用 HTML 文件。
标签: c# asp.net asp.net-mvc elmah elmah.mvc