【问题标题】:ELMAH for ASP.NET MVC 4 using SQL SERVER 2008 R2使用 SQL SERVER 2008 R2 的 ASP.NET MVC 4 的 ELMAH
【发布时间】:2013-04-25 02:45:28
【问题描述】:

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

【问题讨论】:

    标签: sql-server asp.net-mvc sql-server-2008-r2 elmah


    【解决方案1】:

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

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

    &lt;DBConnString&gt;&lt;YourApp&gt; 替换为适合您的配置的值。

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

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

    【讨论】:

    • 现有的 elmah 配置怎么样? elmah 会创建必要的表吗?
    • 没有 elamh 不会自动创建现有的表。但是,您可以从数据库部分的code.google.com/p/elmah/wiki/Downloads 下载一个脚本来针对您的数据库类型和版本执行此操作。
    • 我相信它是连接字符串名称(在 web.config 部分中定义),而不是连接字符串本身,在 connectionStringName=""价值。
    猜你喜欢
    • 2023-03-04
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多