我在测试数据库中运行了 ELMAH sql 脚本(它创建了 ELmah_Error 表和 3 个存储过程)并使用 Nuget 在 MVC 应用程序中配置了 ELMAH。
我按照指定修改了 web.config 并且我能够将异常记录到
http://mysite/elmah.axd
但是,我想将异常记录到 Sql Server 中。
我添加了下面的类来实现
public class ElmahHandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute
{
public override void OnException(System.Web.Mvc.ExceptionContext context)
{
LogException(e);
}
private static void LogException(Exception e)
{
// Call to Database and insert the exception info
}
}
最后一步是:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ElmahHandleErrorAttribute ());
}
这是使用 ELMAH 记录所有异常的正确方法还是我遗漏了什么?
最佳答案
完成数据库设置后,您需要做的就是将以下内容添加到 web.config 的 <elmah>
部分,以设置 Elmah 以登录 SQL 数据库:
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="<DBConnString>"
applicationName="<YourApp>"
</elmah>
将
<DBConnString>
和 <YourApp>
替换为适合您的配置的值。完成此操作后,您将不需要使用自定义 ElmahHandleErrorAttribute 类。
我不确定您安装了哪个 NuGet 包,但我建议使用 Elmah.MVC 包,因为它通过为您设置所有 ErrorHandlers 和 ErrorFilters 将 Elmah 非常好地集成到 MVC 中。