ValidateRequest для каждого элемента управления - PullRequest
0 голосов
/ 16 января 2010

Моя страница ASP.NET содержит "ValidateRequest = true".Однако на странице есть одно текстовое поле, для которого я не хочу проверять ASP.NET.Есть ли способ сделать это ложным для этого одного элемента управления?Если нет, то есть ли способ игнорировать ошибку «Потенциальная угроза», если предположить, что она исходит от этого конкретного элемента управления?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2012

Взгляните на мой вопрос . По-видимому .NET 4.5 теперь поддерживает исключение элементов управления из проверки запроса страницы.

http://msdn.microsoft.com/en-us/library/system.web.ui.control.validaterequestmode.aspx

0 голосов
/ 16 января 2010

Единственный известный мне способ сделать это - вызвать ValidateString класса HttpRequest. К сожалению, это личное, поэтому вы должны делать это с отражением.

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

MethodInfo _validateMethodInfo = typeof(HttpRequest).GetMethod("ValidateString", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod);
foreach (string key in Request.Form.AllKeys) {
  if (key = "< skipped field name >") {
    continue;
  }
  object[] parameters = { Request.Form[key], key, "Request.Form" };
  _validateMethodInfo.Invoke(Request, parameters);
}
...