В моем приложении MVC4 (RC) возникла странная проблема. (работает на .NET 4.0)
Я только что установил Elmah для регистрации исключений/ошибок.
В основном я установил пакеты Elmah.MVC и elmah.sqlserver NuGet. (версии 2.0.0 и 1.2 соответственно)
Казалось, что все в порядке - я могу перейти на страницу elmah и просмотреть ошибки:
http://myserver/elmah
например, если я создаю 404 ошибки, они появляются в этом журнале.
Что не работает, так это: у меня стандартный MVC-контроллер с действием [HttpPost]
. Я настроил его так, чтобы он всегда выдавал исключение:
public class TestController : Controller
{
[HttpPost]
[ValidateInput(false)]
public void Testing()
{
throw new Exception("uh oh");
}
}
Затем я пытаюсь отправить данные на этот контроллер через jQuery:
$.post('/Test/Testing', {test_data: 'This is some test data'});
Хорошо, это работает. Ответ возвращает типичный желтый экран смерти, и ошибка поймана и вошла в систему в Elmah.
Однако, если я попытаюсь опубликовать что-то вроде XML/HTML, ошибка будет не зарегистрирована в Elmah. Я все еще получаю тот же ответ от сервера назад (желтый экран смерти), но ничего в Эльме.
$.post('/Test/Testing', {test_data: '<test><test1>This is some test data</test1></test>'});
Почему? Это не имеет смысла.
Заметьте, что я уже отключил проверку запроса на действие. Если бы я этого не делал, публикация XML/HTML-данных привела бы к этому исключению:
Потенциально опасное значение Request.Form было обнаружено у клиента
NuGet также откажется также регистрировать это исключение, которое, я считаю, является ошибкой:
http://code.google.com/p/elmah/issues/detail?id=217
Итак, в чем причина этой проблемы, которую я испытываю? Это ошибка, связанная с проблемой, которую я нашел выше?
Кажется довольно неудачной ситуацией, что я не могу регистрировать исключения только потому, что запрос содержал XML/HTML.
Конечно, есть ли способ?