Asp.net mvc 2 如何手动从ELMAH中获取已记录的条目

Asp.net mvc 2 如何手动从ELMAH中获取已记录的条目,asp.net-mvc-2,logging,elmah,Asp.net Mvc 2,Logging,Elmah,这似乎很简单。Elmah记录错误,我在Elmah.axd文件中看到错误,然后我想将数据抓取到一个新的自定义视图中 我不知道如何从Elma那里获取详细信息。到目前为止,我所能做的只是获取我想要的ErrorLogEntry,但无法弄清楚如何获取服务器发出的实际XML/异常错误 Elmah是正常设置的。但我有: <customErrors mode="On" defaultRedirect="~/Error/Index"> <error statusCode="404" re

这似乎很简单。Elmah记录错误,我在Elmah.axd文件中看到错误,然后我想将数据抓取到一个新的自定义视图中

我不知道如何从Elma那里获取详细信息。到目前为止,我所能做的只是获取我想要的ErrorLogEntry,但无法弄清楚如何获取服务器发出的实际XML/异常错误

Elmah是正常设置的。但我有:

<customErrors mode="On" defaultRedirect="~/Error/Index">
    <error statusCode="404" redirect="~/Error/NotFound"></error>
</customErrors>

这将转到我的simple ErrorController.cs类:

public virtual ActionResult Index( )
{
    Exception ex = null;

    try
    {
        Elmah.ErrorLogDataSourceAdapter eldsa = new Elmah.ErrorLogDataSourceAdapter( );
        ErrorLogEntry[] errors = eldsa.GetErrors( 0, 1 );

        foreach ( ErrorLogEntry ele in errors )
        {
            ViewData[ "Description" ] += ele.Error.Message + "<br />";
            ViewData[ "Description" ] += ele.Error.WebHostHtmlMessage + "<br />";
            Elmah.ErrorLogPageFactory pf = new ErrorLogPageFactory( );

        }
    }
    catch
    {
        ViewData[ "Description" ] = "An error occurred.";
    }

    ViewData[ "Title" ] = "Oops. We're sorry. An error occurred and we're on the case.";

    //Email.SendException( ex, "Error in PRISM.NET" );
    return View( );
}
公共虚拟操作结果索引()
{
异常ex=null;
尝试
{
Elmah.ErrorLogDataSourceAdapter eldsa=新的Elmah.ErrorLogDataSourceAdapter();
ErrorLogEntry[]errors=eldsa.GetErrors(0,1);
foreach(ErrorLogEntry ele in errors)
{
ViewData[“Description”]+=ele.Error.Message+“
”; ViewData[“Description”]+=ele.Error.WebHostHtmlMessage+“
”; Elmah.ErrorLogPageFactory pf=新的ErrorLogPageFactory(); } } 接住 { ViewData[“说明”]=“发生错误。”; } ViewData[“Title”]=“噢,很抱歉,发生了一个错误,我们正在处理此案。”; //SendException(例如,“PRISM.NET中的错误”); 返回视图(); }
出现的问题是WebHostHtmlMessage为空。所以我无法获得异常消息


我整天都在查看Elmah代码,我不知道如何像调用Elmah.axd时Elmah那样手动创建页面。

假设您将数据存储在默认表Elmah\u Error中

SELECT AllXml
FROM ELMAH_Error

最终的解决方案如下:

public virtual ActionResult Index( )
{
    Exception ex = null;

    try
    {
        Elmah.ErrorLogDataSourceAdapter eldsa = new Elmah.ErrorLogDataSourceAdapter( );
        ErrorLogEntry[] errors = eldsa.GetErrors( 0, 1 );

        foreach ( ErrorLogEntry ele in errors )
        {
            ErrorLogEntry thisError = ErrorLog.GetError(ele.Id);
            ex = new Exception( thisError.Error.WebHostHtmlMessage );
        }
    }
    catch
    {
        ViewData[ "Description" ] = "An error occurred.";
    }

    ViewData[ "Description" ] = "Oops. We're sorry. An error occurred and we're on the case.";

    Email.SendException( ex, "Error in PRISM.NET" );
    return View( );
}

相反,我想从Elmah类中获取数据,而不是用老式的方式。