Elmah.MVC - MVC 5 ArgumentNullException:值不能为null。参数名称ID:

时间:2015-05-06 18:17:39

标签: sql-server asp.net-mvc-5 elmah elmah.mvc

尝试渲染elmah错误日志和使用SQL DB时收到错误。 “http://localhost:5525/elmah”[ArgumentNullException:值不能为null。 参数名称:id]    c:\ builds \ ELMAH-1.2-SP2 \ src \ Elmah \ ErrorLogEntry.cs中的Elmah.ErrorLogEntry..ctor(ErrorLog日志,字符串id,错误错误):57    c:\ builds \ ELMAH-1.2-SP2 \ src \ Elmah \ SqlErrorLog.cs:365中的Elmah.SqlErrorLog.ErrorsXmlToList(XmlReader reader,IList errorEntryList)    c:\ builds \ ELMAH-1.2-SP2 \ src \ Elmah \ SqlErrorLog.cs中的Elmah.SqlErrorLog.ErrorsXmlToList(String xml,IList errorEntryList):332    c:\ builds \ ELMAH-1.2-SP2 \ src \ Elmah \ SqlErrorLog.cs中的Elmah.SqlErrorLog.GetErrors(Int32 pageIndex,Int32 pageSize,IList errorEntryList):186    Elmah.ErrorLogPage.OnLoad(EventArgs e)在c:\ builds \ ELMAH-1.2-SP2 \ src \ Elmah \ ErrorLogPage.cs:76    System.Web.UI.Control.LoadRecursive()+54    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+772

我有最新的Core Elmah 1.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。有没有人遇到过这个?

1 个答案:

答案 0 :(得分:0)

我下载了核心Elmah代码,并逐步找到SqlErrorLog.cs,方法ErrorsXmlToList(XmlReader reader,IList errorEntryList),调用get id是缺少的参数:string id = reader.GetAttribute(“errorId “);我降低了套装“errorid”,一切正常。显然这不是一个好的解决方案,因为这是每个人都使用的核心代码,所以我深入挖掘。

这让我看看存储过程ELMAH_GetErrorsXml。我在我们的数据库中发现我们有一个小写的“errorid”。我更新了存储过程以选择“errorId”并将核心Elmah更改回原始代码,当然一切正常。