Повторная проверка ввода для запроса в ASP.NET - PullRequest
1 голос
/ 01 апреля 2011

Есть ли способ попросить ASP.NET повторно проверить ввод, если вход был проверен один раз для запроса? HttpRequest.ValidateInput , похоже, не помогает.

Следующий код иллюстрирует проблему:

string Foo(HttpRequest request)
{
    try
    {
        var form = request.Form; // @1
        // ...do something with form...
    }
    catch (HttpRequestValidationException)
    {
        // ...handling...
        // then re-flag validation
        request.ValidateInput(); // @2
    }

    return request.Form["comment"]; // @3
}

Предположим, что отправлена ​​форма, содержащая поле формы с содержимым HTML, которое не пройдет проверку ввода ASP.NET. При обращении к коллекции Form (@ 1) ASP.NET выдаст HttpRequestValidationException. Однако обработчик catch снова запрашивает проверку (@ 2). Согласно документам, ValidateInput не вступает в силу немедленно. Вместо этого он указывает, что проверка должна иметь место при следующем доступе к защищенным битам запроса (например, к коллекции Forms). Однако при повторном обращении к коллекции Form исключение не возникает (@ 3).

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