【问题标题】:MVC & Elmah - Can Elmah be displayed using MVC site layout?MVC & Elmah - Elmah 可以使用 MVC 站点布局显示吗?
【发布时间】:2012-03-30 12:43:01
【问题描述】:

那里有很多关于 Elmah 和 MVC 3/4 的重要信息。几年来我一直在项目中使用 Elmah。

我没有看到有人问或解决的一件事是使用 MVC 站点的布局显示 Elmah。

有人试过吗?

我正在开发一个 MVC-4 项目,并且 Elmah 目前正在它自己的区域运行。我使用了Joel.net的设置

它现在运行得非常好,但真的很想听听社区关于在网站布局中显示结果的意见。

非常感谢任何提示/建议。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


    【解决方案1】:

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

    您有一些需要额外工作的选项:

    • 创建您自己的视图。您可能需要参考 Elmah 源代码,因为某些必需的类可能是内部的。
    • 在您自己的视图中的 iframe 中显示 Elmah。这可能不是最佳选择,但应该可以。
    • 试试Elmah.MVC,它看起来像 Elmah 的 MVC 控制器:

    将 ELMAH 功能轻松集成到 ASP.NET MVC 中 应用。创建管理区域和相应的控制器,所以 ELMAH 可通过 /admin/elmah 路线获得。

    【讨论】:

    • 已经在使用 Elmah.MVC,虽然它确实有一个 Elmah 控制器,但每个操作方法都提供一个自定义 ElmahResult 而不是操作结果/视图。
    • 它确实对我有用。 Elmah 位于一个名为“SiteAdmin”的区域中,它有自己的控制器 (ElmahController)。同样,控制器主要是为了将 url 结构保留在 MVC 管道中。
    • 这能回答你的问题吗?
    • 不,ElmahController 不会在其任何操作方法中返回视图。
    • ElmahResult 创建了一个 webforms 页面的子类实例,其中包含许多无法轻松访问的 HttpContext 依赖项和私有/内部。它甚至看起来不像您可以使用网络表单母版页。我猜想重写它比找到一种方法让它工作更容易。
    【解决方案2】:

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

    这是一篇关于结合 Elmah、健康监控、Log4Net 和 NLog 的非常全面的文章,涵盖了您在任何 MVC 应用程序中可能需要的所有日志记录。它涵盖了对象以及实体对象、控制器、视图等,并将所有这些都集成到一个 UI 中。

    这篇文章的日期是(2010 年)并且在 MVC 2 中。我能够采用 Darren 的方法,将其转换为 VB.NET 并使其全部在我正在开发的大型 MVC 4 应用程序中运行。

    即使你不使用它,它也是一个很棒的教程,值得一读。

    为那篇文章向 Darren 提供疯狂的道具。

    【讨论】:

    【解决方案3】:

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

    【讨论】:

    • Nolan 的工作量太大了,当 UI 的所有功能都已经到位时,应该没有必要。
    • 很公平......但是,在进一步研究了 ELMAH MVC 项目之后,它看起来确实包含了一个控制器。我猜下一步是获取从控制器返回的模型/数据并在自定义视图中对其进行操作,这应该是直截了当的。话虽如此,我现在知道有一个我以前不知道的 ELMAH MVC 项目,所以我可能也必须使用它(感谢 jrummell 提供指向 Elmah.MVC 的链接)
    • Nolan,做得很好,我自己也在用。我已经将它转换为 VB.net,所以如果你需要那个版本,请给我留言。
    【解决方案4】:
    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 确实在实施菜单上。
    猜你喜欢
    • 2016-09-18
    • 2011-12-14
    • 2010-11-14
    • 2011-09-23
    • 2012-09-06
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多