我在尝试渲染elmah错误日志并使用SQL DB时收到错误。"http://localhost:5525/elmah“ArgumentNullException:值不能为空。参数名称: id Elmah.ErrorLogEntry..ctor(ErrorLog Elmah.SqlErrorLog.ErrorsXmlToList,String id,Error error) in c:\builds\ELMAH-1.2-SP2\src\Elmah\ErrorLogEntry.cs:57 Elmah.SqlErrorLog.ErrorsXmlToList(XmlReader reader,IList errorEntryList) in c:\builds\ELMAH-1.2-SP2\src\Elmah\SqlErrorLog.cs:332 Elmah.SqlErrorLog.ErrorsXmlToList(String xml,IList errorEntryList) in xml Elmah.SqlErrorLog.GetErrors(Int32 pageIndex,Int32 pageSize,c:\builds\ELMAH-1.2-SP2\src\Elmah\SqlErrorLog.cs:186 Elmah.ErrorLogPage.OnLoad(EventArgs e) in c:\builds\ELMAH-1.2-SP2\src\Elmah\SqlErrorLog.cs:186 System.Web.UI.Control.LoadRecursive() +54 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) +772
我有最新的Core Elmah1.2-sp2和最新的Elmah.MVC 2.1.2。我使用默认的web.config设置安装了Nuget包Elmah.MVC。
当我配置web.config将错误记录到数据库中时,错误被记录在数据库中,但是我不能呈现错误页面。当我不配置数据库时,elmah页面呈现得很好。
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="Company" />
</elmah>我在抛出参数的构造函数中看到了反编译Elmah。
if (id == null)
throw new ArgumentNullException("id");
if (id.Length == 0)
throw new ArgumentException((string) null, "id");我在数据库中的所有ErrorId都填充了GUID。
我被什么id没有传递给核心elmah难住了。以前有没有人遇到过这种情况?
发布于 2015-06-24 07:12:26
我下载了核心Elmah代码,并逐步在SqlErrorLog.cs中查找,方法ErrorsXmlToList(XmlReader阅读器,IList errorEntryList)有一个获取id的调用,其中缺少了参数: string id = reader.GetAttribute( "errorid“);我降低了大小写”errorid“,一切都正常了。显然,这不是一个好的解决方案,因为这是每个人都使用的核心代码,所以我深入挖掘。
这让我想到了存储过程ELMAH_GetErrorsXml。我发现在我们的数据库中有一个小写的"errorid“。我更新了存储过程以选择"errorId“,并将核心Elmah改回原始代码,当然一切都正常。
https://stackoverflow.com/questions/30084596
复制相似问题