当前位置 : 主页 > 网络编程 > ASP >

asp.net-mvc – 澄清在ASP.NET MVC中使用ELAMH

来源:互联网 收集:自由互联 发布时间:2021-06-24
我目前正在使用mvc4和vs2012,我已经安装了mvc.elmah nugget. 我做了什么 ? 最初我没有写任何代码,我的异常记录在ELMAH中. 后来我决定使用MVC HandleError来处理Application Exceptions并添加过滤器 f
我目前正在使用mvc4和vs2012,我已经安装了mvc.elmah nugget.

我做了什么 ?

最初我没有写任何代码,我的异常记录在ELMAH中.

后来我决定使用MVC HandleError来处理Application Exceptions并添加过滤器

filters.Add(new HandleErrorAttribute());

现在我在过滤器中调试,看到我有2个过滤器,一个用于ELMAH HandleErrorAttribute和MVC HandleErrorAttribute!

我看到了这个优秀的链接https://stackoverflow.com/a/5936867/1481690,它谈到了使用ErrorSignal来处理应用程序异常

但是我没有使用ErrorSignal,但我的例外情况仍被ELMAH捕获?

如果我使用

if (context.ExceptionHandled)
            ErrorSignal.FromCurrentContext().Raise(context.Exception);

我的例外记录两次.

我的问题如下

>我需要使用2个过滤器(ELMAH和MVC)吗?
>如果ELMAH已经拥有HandleErrorAttribute并记录异常.我需要添加MVC HandleErrorAttribute吗?

目前正在做什么

添加过滤器

filters.Add(new HandleErrorAttribute());

和覆盖(将来处理Ajax错误)

public class HandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute
    {
        public override void OnException(ExceptionContext context)
        {
 base.OnException(context);
}

这是足够的还是什么是好的做法?我没有提高ErrorSignal,因为它记录了两次.

我没有使用任何try.catch,因为我使用下面的行并希望我的异常得到处理.

base.OnException(context);

}

只是想确保我正确的方式!

谢谢你的时间

更新:我指出错误的包更新问题.

你不需要两者. ElmahHandleErrorAttribute继承自HandleErrorAttribute,因此使用两者都是多余的.

How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?

你也不需要为Elmah提出任何信号,ElmahHandleErrorAttribute会处理这个问题.

如果您正在使用Nuget的Elmah.Contrib.MVC,那么您需要的是ElmahHandleErrorAttribute.

filters.Add(new Elmah.Contrib.MVC.ElmahHandleErrorAttribute());

还有一个包在那里,我在Elmah.MVC由同一作者Elmah完成了这个错误,我正在研究这个包以找出差异是什么以及如何使用它.

更新2:好的,显然Elmah.MVC软件包内置了所有内容,并且它们使用WebActivator为您注册了几乎所有内容.所以你需要在一个全新的MVC项目上做的就是开始跟踪Elmah的错误就是安装包,然后进行编译.完成.但是,您应该在安装后检查web.config,并在AppSettings下,设置查看页面所需的角色并启用身份验证.

网友评论