Elmah не регистрирует исключения для запросов HTTP post в приложении MVC - если запрос содержит XML
Я столкнулся со странной проблемой в моем приложении 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, ошибкаnot вошел в Элму. Я все еще получаю тот же ответ от сервера обратно (желтый экран смерти), но ничего в Elmah.
$.post('/Test/Testing', {test_data: '<test><test1>This is some test data</test1></test>'});
Зачем? Это не имеет смысла.
Обратите внимание, что я уже отключил проверку запроса на действие. Если бы я этого не делал, то публикация данных XML / HTML привела бы к этому исключению:
A potentially dangerous Request.Form value was detected from the client
NuGet также отказался бы регистрировать это исключение - что я считаю ошибкой:
http://code.google.com/p/elmah/issues/detail?id=217
Так в чем же причина этой проблемы, с которой я сталкиваюсь? Это ошибка, связанная с проблемой, которую я обнаружил выше?
Просто кажется довольно прискорбной ситуацией, когда я не могу регистрировать исключения только потому, что запрос содержал XML / HTML.
Конечно, есть способ обойти это?