Asp.net mvc 2 如何手动从ELMAH中获取已记录的条目
这似乎很简单。Elmah记录错误,我在Elmah.axd文件中看到错误,然后我想将数据抓取到一个新的自定义视图中 我不知道如何从Elma那里获取详细信息。到目前为止,我所能做的只是获取我想要的ErrorLogEntry,但无法弄清楚如何获取服务器发出的实际XML/异常错误 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
<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类中获取数据,而不是用老式的方式。