Как зарегистрировать ошибку в ELMAH при обнаружении ошибки для правильного форматирования JSON в MVC 3 - PullRequest
3 голосов
/ 26 октября 2011

У меня есть приложение ASP.NET MVC 3, в котором я выполняю вызов AJAX и ожидаю получения результата JSON.Я использую ELMAH для регистрации ошибок.Во время тестирования у меня произошла неожиданная ошибка.ELMAH зарегистрировал ошибку, но мой сценарий на стороне клиента - нет, потому что результат не соответствует JSON.Если я обработаю все ошибки в контроллере для получения правильного результата JSON, то ELMAH не регистрирует ошибку.Я знаю, что могу позвонить в ELMAH специально для регистрации ошибки, но мне больше нравится, что мне не нужно делать это где-либо еще.

Может кто-нибудь уточнить «правильный» способ обработки этого сценария?

например

    try
{
                //service.dosomethingwitherror();
    return new JsonResult { Data = new { result = true, message = "Success." } };
}
catch (Exception ex)
{
    return new JsonResult { Data = new { result = true, message = "Failed." } };
}

Так как я «обрабатываю» это, ELMAH не регистрируется.Если я не справлюсь с этим, мой клиент не получит JSON ...

1 Ответ

5 голосов
/ 26 октября 2011

Вы можете использовать класс ErrorSignal для входа в систему вручную. Это выполнит все настроенные операции elmah (журнал, почта, твит и т. Д.).

ErrorSignal.FromCurrentContext().Raise(new NotSupportedException());

См. http://code.google.com/p/elmah/wiki/DotNetSlackersArticle#Signaling_errors для получения дополнительной информации.

Если вам действительно не нравится добавлять этот код в свой контроллер, вы не можете перехватить сторону сервера исключений и обработать событие ошибки ajax в своем JavaScript.

...