7

我在测试数据库中运行 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 记录所有异常的正确方法还是我遗漏了什么?

4

1 回答 1

11

完成数据库设置后,您只需将以下内容添加到<elmah>web.config 部分,以设置 Elmah 以登录到 SQL 数据库:

 <elmah>
      <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="<DBConnString>"
            applicationName="<YourApp>" 
  </elmah>

<DBConnString>和替换<YourApp>为适合您的配置的值。

完成此操作后,您将不需要使用自定义 ElmahHandleErrorAttribute 类。

我不确定您安装了哪个 NuGet 包,但我建议使用Elmah.MVC包,因为它通过为您设置所有 ErrorHandlers 和 ErrorFilters 将 Elmah 非常好地集成到 MVC 中。

于 2013-05-01T12:33:01.013 回答