Проверка запроса - ASP.NET MVC 2 - PullRequest
       27

Проверка запроса - ASP.NET MVC 2

20 голосов
/ 30 октября 2009

Изменена ли проверка запроса для ASP.NET MVC 2, точнее, не проверяется?

Я сделал следующее:

Web.configs (в каталоге приложения и в папке Views)

<pages
    validateRequest="false"

Контроллер / Атрибут действия

[ValidateInput(false)]

In @Page View Directive

ValidateRequest="false"

Страница по-прежнему проверяется, возникает исключение при публикации содержимого HTML.

UPDATE

Создано новое приложение ASP.NET MVC 2, и я изменил индекс Home Controller для этого

    [ValidateInput(false)]
    public ActionResult Index(string InputText)
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View();
    }

и моя страница просмотра

<% using(Html.BeginForm()){ %>
    <%= Html.TextBox("InputText") %>
    <input type="submit" />
<% } %>

И все та же проблема, исключение.

Ответы [ 2 ]

31 голосов
/ 30 октября 2009

В следующий раз я должен прочитать ошибку более внимательно:

Чтобы разрешить страницам переопределять параметры проверки запросов приложений, установите requestValidationMode = "2.0" в разделе конфигурации. После установки этого значения вы можете отключить проверку запроса с помощью настройка validateRequest = "false"

Я положил это в приложение web.config

<system.web>
  <httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
</system.web>

и это сработало.

Обновление:

Я работал под управлением ASP.NET 4, поэтому: P

2 голосов
/ 30 октября 2009

Включить обязательное предупреждение о XSS здесь.

Достаточно того, чтобы вы украсили контроллер (или действие) ValidateInputAttribute, поскольку вся проверка выполняется на этом уровне контроллера в ASP.NET MVC

Я только что попробовал это сейчас в действии, и оно возвращает хорошее, злое предупреждение (), когда я выводил его, поэтому рискну предположить, что здесь что-то еще происходит.

У вас есть HandleErrorAttribute настроенный где-нибудь?

...