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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....