2015-05-06 3 views
0

Я получаю сообщение об ошибке при попытке отображения журналов ошибок elmah и использования SQL DB. "http://localhost:5525/elmah" [ArgumentNullException: значение не может быть нулевым. Имя параметра: id] Elmah.ErrorLogEntry..ctor (журнал ErrorLog, String id, ошибка) в c: \ builds \ ELMAH-1.2-SP2 \ src \ Elmah \ ErrorLogEntry.cs: 57 Elmah.SqlErrorLog.ErrorsXmlToList (XmlReader reader, IList errorEntryList) в c: \ builds \ ELMAH-1.2-SP2 \ src \ Elmah \ SqlErrorLog.cs: 365 Elmah.SqlErrorLog.ErrorsXmlToList (String xml, IList errorEntryList) в c: \ builds \ ELMAH-1.2 -SP2 \ src \ Elmah \ SqlErrorLog.cs: 332 Elmah.SqlErrorLog.GetErrors (Int32 pageIndex, Int32 pageSize, IList errorEntryList) в c: \ builds \ ELMAH-1.2-SP2 \ src \ Elmah \ SqlErrorLog.cs: 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 includeStagesBeforeAsyncPoi nt, Boolean includeStagesAfterAsyncPoint) +772Elmah.MVC - MVC 5 ArgumentNullException: значение не может быть нулевым. Идентификатор имени параметра:

У меня есть последний Core Elmah 1.2-SP2 и последний Elmah.MVC 2.1.2. Я установил пакет Nuget Elmah.MVC с настройками по умолчанию web.config.

Когда я настраиваю 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. Кто-нибудь сталкивался с этим раньше?

ответ

0

Я загрузил основной код Elmah и перешел на поиск в SqlErrorLog.cs, метод ErrorsXmlToList (XmlReader reader, IList errorEntryList) есть вызов для получения идентификатора, который был отсутствующим параметром: string id = reader.GetAttribute (" ErrorID "); Я опустил «ошибку», и все сработало. Очевидно, это нехорошее решение, потому что это основной код, с которым все работают, поэтому я углубляюсь глубже.

Это привело меня к хранимой процедуре ELMAH_GetErrorsXml. Я нашёл в нашей базе данных "errorid". Я обновил хранимую процедуру, чтобы выбрать «errorId», и изменил основной Elmah на исходный код, и, конечно же, все сработало.