MVC和Elmah - Elmah是否可以使用MVC站点布局显示?

3
有很多关于Elmah和MVC 3/4的优秀信息。我已经在项目中使用Elmah几年了。
但是,我没有看到有人问过或解决过使用MVC网站布局显示Elmah的问题。
有人尝试过吗?
我正在开发一个MVC-4项目,Elmah目前在它自己的区域中运行。我使用了Joel.net上的设置。
它的工作非常好,但真的很想听听社区关于在网站布局中显示结果的意见。
非常感谢任何提示/建议。
4个回答

5

不,至少不是直接的。Elmah使用一个HttpHandler来显示错误信息,这完全忽略了MVC管道。

你有几个选项需要额外的工作:

  • 创建自己的视图。你可能需要引用Elmah源代码,因为一些必需的类可能是内部的。
  • 在你自己的视图中使用iframe显示Elmah。这可能不是最佳选择,但它应该可以工作。
  • 尝试Elmah.MVC,这看起来像是一个用于Elmah的MVC控制器:

将ELMAH功能无痛集成到ASP.NET MVC应用程序中。创建管理区域和相应的控制器,所以通过/admin/elmah路径可用ELMAH。


已经在使用 Elmah.MVC,虽然它确实有一个 Elmah 控制器,但每个操作方法都提供了一个自定义的 ElmahResult 而不是一个操作结果/视图。 - Ed DeGagne
对我来说确实有效。Elmah位于名为“SiteAdmin”的区域中,它有自己的控制器(ElmahController)。但是,该控制器主要是为了保持URL结构在MVC管道内而实现的。 - Ed DeGagne
这个回答解决了你的问题吗? - jrummell
不,ElmahController在其任何操作方法中都不返回视图。 - Ed DeGagne
1
ElmahResult会创建一个子类的WebForms页面实例,该页面具有许多HttpContext依赖项和无法轻松访问的私有/内部成员。它甚至看起来无法与WebForms masterpage一起使用。我猜重写它比找到一种不太可行的方法让它正常工作更省事。 - Betty
显示剩余2条评论

3

这里有一篇很棒的文章:http://dotnetdarren.wordpress.com/

这是一篇关于如何在任何MVC应用程序中覆盖所有日志记录所需内容的综合性文章,它涵盖了对象以及实体对象、控制器、视图等,并将它们合并到一个UI中。

该文章发布于2010年,适用于MVC 2。我能够采用Darren的方法,将其转换为VB.NET,并在我正在开发的大型MVC 4应用程序中运行。

即使您不使用它,这也是一篇非常好的教程,值得一读。

享受阅读,并向Darren致敬。


1
请注意,系列文章始于此帖:http://dotnetdarren.wordpress.com/2010/07/27/logging-on-mvc-part-1/。 - James Skemp

1
如果您使用Elmah的SQL Server模块,您可以将错误保存到SQL数据库中。完成后,您可以编写自定义应用程序或页面从数据库中读取并以任何您喜欢的方式呈现。

这太多工作了,Nolan,当UI的所有功能已经到位时,这不应该是必要的。 - Ed DeGagne
好的...不过,在进一步了解ELMAH MVC项目后,确实包含了一个控制器。我猜下一步是将从控制器返回的模型/数据在自定义视图中进行操作,这应该很简单。话虽如此,我现在知道有一个ELMAH MVC项目,这是我之前不知道的,所以我也许还得使用它(感谢jrummell提供Elmah.MVC链接)。 - Nolan St. Martin
Nolan,这个程序已经做得很好了,我也在使用它。我已经将它转换成VB.net版本,如果你需要那个版本,就告诉我一声。 - Ed DeGagne

0
If ("site's layout" == in-line, on the page){
    edit the masterstylesheet to include elmah.
or 
    wire it into a jQuery plugin.
} else {
    have you considered Glimpse's role in the display chain?
}

我还没有考虑过这个,但是Glimpse确实在实现菜单上。 - Ed DeGagne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接