Elmah не регистрировал HttpRequestValidationException

В моем приложении ASP.NET MVC2 Elmah не удалось зарегистрировать любой HttpRequestValidationException (кроме случаев, когда вы вошли в веб-сервер через удаленный рабочий стол и просматриваете сайт как localhost)

Например, если я набираю &#39 в текстовое поле при обычном просмотре с моего компьютера с использованием имени домена, я получаю

Server Error in '/' Application.
Runtime Error 

Description: An application error occurred on the server. The current custom 
error settings for this application prevent the details of the application 
error from being viewed remotely (for security reasons). It could, however, 
be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on 
remote machines, please create a <customErrors> tag within a "web.config" 
configuration file located in the root directory of the current web application. 
This <customErrors> tag should then have its "mode" attribute set to "Off".

И ничего не отображается в журнале Elmah.

Но если я войду на веб-сервер через удаленный рабочий стол и просмотрю сайт как локальный, я могу увидеть полное сообщение об ошибке:

Server Error in '/' Application.
A potentially dangerous Request.Form value was detected from the client 

Я знаю, почему отображаются разные сообщения об ошибках, потому что у меня нет <customErrors mode="Off"/> node в моем web.config. Но это нормально, я не хочу, чтобы полное сообщение об ошибке было показано всему миру.

Но я хочу, чтобы Elmah регистрировал эту ошибку, когда это происходит. Что мне нужно сделать, чтобы это работало так, как ожидалось?

Ответ 1

Я думаю, что это этот дефект Elmah http://code.google.com/p/elmah/issues/detail?id=217, который вызван нарушением изменений в проверке запроса в ASP.NET 4. В дефекте перечислены два возможных обходных решения (вручную запишите исключение в ELMAH, поймав его в обработчике Application_Error или отключив новое поведение проверки в Web.config)

Смотрите этот пост в блоге, предоставляя обходное решение.