Elmah добавляет сообщение об ошибке, зарегистрированной через вызов Raise (e)

Я немного озадачен тем, как добавить сообщение к ошибке, записанной программно с помощью ELMAH.

например:

public ActionResult DoSomething(int id)
{
    try { ... }

    catch (Exception e)
    {
        // I want to include the 'id' param value here, and maybe some
        // other stuff, but how?
        ErrorSignal.FromCurrentContext().Raise(e);
    }
}

Кажется, все, что может сделать Elmah, это записать необработанное исключение, как я могу также записать свою собственную информацию отладки?

 Simon_Weaver08 февр. 2013 г., 12:14
Любопытно, почему у Элмы нет перегрузки для повышения для дополнительных сообщений. контекстная информация имеет жизненно важное значение при попытке исправить определенные ошибки

Ответы на вопрос(2)

Решение Вопроса

Вы можете выдать новое Исключение, установив оригинал как внутреннее исключение, и ELMAH будет регистрировать сообщения для обоих:

catch(Exception e)
{
    Exception ex = new Exception("ID = 1", e);
    ErrorSignal.FromCurrentContext().Raise(ex);
}

покажет

System.Exception: ID = 1 ---> System.NullReferenceException: Object reference not set to an instance of an object.
 Justin Williams07 янв. 2011 г., 23:38
работает отлично! Спасибо!
 fearofawhackplanet28 сент. 2010 г., 16:20
хорошая идея, спасибо
 pqsk05 февр. 2014 г., 18:18
Вы должны использовать Exception.Data, но по умолчанию elmah не имеет этой функциональности. Я добавил к пользовательской версии, которую я использую. Я действительно должен опубликовать код где-нибудь. Я знаю, что это старо, но я думаю, что это не на 100% правильно. Да, вы можете использовать это для мелких деталей, но если вам нужен список данных, для этого и был создан Exception.Data. Например, когда выдается исключение SQLException, вы получаете много деталей. Я также добавил это. Это не очень сложно сделать самому. Также при работе с linq2sql вы также можете получить много деталей.

Elmah.ErrorSignal.FromCurrentContext().Raise(new NotImplementedException("class      FbCallback.Page_Load() Request.Url= " + Request.Url));

Чтобы регистрировать мои собственные сообщения. Затем, когда я просматриваю

http://localhost:5050/elmah.axd

Я вижу свои сообщения как тип NotImplementedException. Не очень красиво, но работает.

Ваш ответ на вопрос