«Обнаружен потенциально опасный Request.Path ...» в .NET 4 с параметром requestValidationMode = "2.0" и validateRequest = "false" - PullRequest
4 голосов
/ 27 октября 2011

Я пытаюсь обойти сообщение об ошибке, которое выдает .NET при попытке отправить HTML:

A potentially dangerous Request.Form value was detected from the client

Прочитав следующий вопрос , web.config выглядит следующим образом:

<configuration>
    <system.web>

        <httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters=""/>

        <pages validateRequest="false">
            <namespaces>
                <add namespace="Microsoft.Web.Mvc" />
                <add namespace="System.Web.Mvc" />
                <add namespace="System.Web.Mvc.Ajax" />
                <add namespace="System.Web.Mvc.Html" />
                <add namespace="System.Web.Routing" />
            </namespaces>
        </pages>

    </system.web>
</configuration>

Когда я печатаю в HTML, я все равно получаю сообщение об ошибке.Я использую приложение .NET 4, MVC 2, только используя сервер разработки Visual Studio.

Ответы [ 2 ]

3 голосов
/ 27 октября 2011

Ааа, просто прочитайте блог здесь: http://geekswithblogs.net/renso/archive/2011/08/26/a-potentially-dangerous-request-value-was-detected-from-the-client.aspx

В нем говорится о добавлении еще одного атрибута к вашим действиям, [ValidateInput(false)], что, как ни странно, я не встречал ни в одном из подобных вопросов о SO.

Я добавил атрибут в свой BaseController, от которого наследуются все контроллеры в моем приложении, и он сразу начал работать.

[ValidateInput(false)]
public class BaseController : Controller
{
    // code here
}

Примечание: мне все еще нужно было включить оба:

<httpRuntime requestValidationMode="2.0"/>

и

<pages validateRequest="false" />

в веб-конфигурации.

0 голосов
/ 27 октября 2011

Попробуйте выполнить чистую перестройку решения и при необходимости закройте Visual Studio и очистите временные файлы ASP.NET. Если для ValidateRequest установлено значение false, это, вероятно, проблема с кэшированием, или ваша DLL не синхронизирована.

Как упоминалось в ajbeaven, вы также можете попробовать добавить атрибут ValidateInput в ваш класс контроллера.

Одно из приведенных выше предложений определенно должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...