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

Я немного озадачен тем, как добавить сообщение к ошибке, записываемой программно с помощью 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);
    }
}

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

Ответы [ 2 ]

18 голосов
/ 28 сентября 2010

Вы можете выдать новое Исключение, установив оригинал как внутреннее исключение, и 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.
3 голосов
/ 14 июня 2011

Я обнаружил, что я также могу сделать что-то вроде:

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

Для регистрации своих собственных сообщений.Затем, когда я перехожу к

http://localhost:5050/elmah.axd

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

...