Elmah.MVC 与 Elmah.contrib.Mvc

Posted

技术标签:

【中文标题】Elmah.MVC 与 Elmah.contrib.Mvc【英文标题】:Elmah.MVC vs. Elmah.contrib.Mvc 【发布时间】:2013-03-12 22:27:02 【问题描述】:

我是 ASP.NET MVC 的新手,我正在寻找最不痛苦的方法来设置全局错误处理、日志记录和报告(通过电子邮件)。仅供参考,我的 ASP.NET MVC 应用程序在 Azure 中作为 Web 角色托管,但我试图避免使用任何 Azure 特定的挂钩。

看起来安装和配置 ELMAH 是很好的第一步。

当我查看 NuGet 时,我看到:

ELMAH(“ELMAH 带有初始配置,可快速入门...”) Elmah.Contrib.Mvc(“...旨在为 MVC 项目添加易用性...”) Elmah.MVC(“...无痛集成到 MVC...”)

我想安装哪些软件包?

编辑:经过一些实验,我更加困惑。在默认 MVC 4 应用程序之上安装三个选项后,我比较了项目文件。似乎 Elmah.Contrib.Mvc 和 Elmah.MVC 都没有添加 elmah.1.2.2 包(我在安装基本 ELMAH 时得到)。此外,这两个包都没有将 <elmah> 部分添加到 Web.config。

那么...我是否需要先安装 ELMAH,然后安装其中一个“...MVC”包以获得他们可能为我带来的任何漂亮改进?

【问题讨论】:

【参考方案1】:

ELMAH - 这是默认的 ELMAH 包,其中没有特定于 mvc 的代码,如果您不执行here 所描述的操作,我不相信 ELMAH 会记录您的控制器中发生的任何错误,并且您可能无法访问 ELMAH 日志页面

Elmah.Contrib.Mvc - 这是基于 ELMAHS 的创建者之一对 stack overflow question 的回答而专门针对 MVC 对 ELMAH 的增强。

Elmah.MVC - 这与上面的包类似,但是我相信它为路由等 mvc 特性提供了更好的支持,它也很容易安装和配置,它消除了你周围的很多麻烦与 ELMAH 一起取出在 mvc 项目中运行时不需要的各个部分

您可以阅读作者的帖子以更好地了解其工作原理:

Integrating ELMAH to ASP.NET MVC in right way ELMAH MVC controller released on NuGet ELMAH.MVC v.2.0.0 - Release Candidate

我个人认为最后一个包是最好的,它似乎是两个 mvc 包中更新和维护的。

【讨论】:

谢谢丹尼尔。我很快发现的一件事是 ELMAH 软件包开箱即用效果很好。我安装了它,找出了 HandleErrorAttribute (***.com/questions/766610/…) 所需的修改,它就可以工作了。我在<elmah> 部分添加了一个<errorMail> 部分,并且,bada bing,bada boom,当检测到错误时,我的网站会向我发送电子邮件。 我同意 ELMAH.MVC 的建议,我在这个项目中将 Elamh 集成到我的 MVC 站点中是非常幸运的。 谢谢,Elmah.MVC 非常适合我。一些更有用的 URL:配置 Elmah.MVC:github.com/alexbeletsky/elmah-mvc 并设置 Elmah.MVC 以使用 MSSQL 而不是内存来存储错误:andyfrench.info/2014/07/… Elmah.Mvc 是使用 MVC 的方式,这太容易了。【参考方案2】:

您可以考虑使用 Elfar 代替 Elmah。 Elfar 受到 Elmah 的“启发”,但被设计为特定于 MVC 并且配置非常简单。

只需打开 NuGet,然后搜索 Elfar。您会发现许多不同的软件包,但一般来说,您需要一个符合您所测试使用的技术的软件包。我不熟悉 Azure Web 角色,但如果您可以访问标准 Sql Server,那么您可以简单地使用 Elfar.SqlClient。

更多信息在这里:

https://github.com/stevenbey/elfar/wiki

【讨论】:

github 页面非常稀疏。 sourceforge 页面 (sourceforge.net/p/elfar/wiki/Home) 包含文档链接(例如)。 @Bob.at.SBS sourceforge 已经过时了。 Github 是当前的东西。 @DanielPowell - 如果你想从源代码重建它,你当然可以自定义它。

以上是关于Elmah.MVC 与 Elmah.contrib.Mvc的主要内容,如果未能解决你的问题,请参考以下文章

为啥会收到奇怪的错误消息 asp.net mvc "elmah.mvc logging library"?

Elmah 适用于 localhost,但不适用于生产?

通过 Live 应用程序上的 Web 界面查看 ELMAH 日志 [重复]

LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL

python网络编程基础(线程与进程并行与并发同步与异步)

=与==&与&&| 与 || 的区别