Я столкнулся со странной проблемой в своем приложении MVC4 (RC ). (работает на.NET 4.0)
Я только что настроил Elmah для регистрации исключений/ошибок.
В основном я установил пакеты NuGet Elmah.MVC и elmah.sqlserver . (версии 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. Я все еще получаю тот же ответ от сервера обратно (желтый экран смерти ), но ничего в Elmah.
$.post('/Test/Testing', {test_data: 'This is some test data '});
Почему? Это не имеет смысла.
Обратите внимание, что я уже отключил проверку запроса для действия. Если бы я этого не сделал, публикация данных XML/HTML вызвала бы это исключение :
. От клиента было обнаружено потенциально опасное значение Request.Form
. NuGet также отказывается регистрировать это исключение -, которое, как я считаю, является ошибкой :
http://code.google.com/p/elmah/issues/detail?id=217
. Итак, в чем причина этой проблемы, с которой я сталкиваюсь? Это ошибка, связанная с проблемой, которую я нашел выше?
Просто кажется довольно неудачной ситуация, что я не могу регистрировать исключения только потому, что запрос содержит XML/HTML.
Наверняка есть способ обойти это?