微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我目前正在使用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下,设置查看页面所需的角色并启用身份验证.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐