RequestValidationSource Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает тип данных HTTP-запроса для проверки.
public enum class RequestValidationSource
public enum RequestValidationSource
type RequestValidationSource =
Public Enum RequestValidationSource
- Наследование
Поля
| Имя | Значение | Описание |
|---|---|---|
| QueryString | 0 | Строка запроса. |
| Form | 1 | Значения формы. |
| Cookies | 2 | Файлы cookie запроса. |
| Files | 3 | Отправленный файл. |
| RawUrl | 4 | Необработанный URL-адрес. (Часть URL-адреса после домена.) |
| Path | 5 | Виртуальный путь. |
| PathInfo | 6 | Http-строка PathInfo , которая является расширением пути URL-адреса. |
| Headers | 7 | Заголовки запроса. |
Примеры
В следующем примере показано, как создать пользовательский класс проверяющего запроса, который разрешает только определенную строку для значений строки запроса.
Imports System.Web
Imports System.Web.Util
Public Class CustomRequestValidation
Inherits RequestValidator
Protected Overloads Overrides Function IsValidRequestString( _
ByVal context As HttpContext, _
ByVal value As String, _
ByVal requestValidationSource__1 As RequestValidationSource, _
ByVal collectionKey As String, _
ByRef validationFailureIndex As Integer) As Boolean
validationFailureIndex = -1
' Set a default value for the out parameter.
' This application does not use RawUrl directly, so you can
' ignore the check for RequestValidationSource.RawUrl.
If requestValidationSource = RequestValidationSource.RawUrl Then
Return True
End If
' Allow the query-string key "data" to have an XML-like value.
If (requestValidationSource = _
(RequestValidationSource.QueryString) AndAlso _
(collectionKey = "data") Then
' The querystring value "<example>1234</example>" is allowed.
If value = "<example>1234</example>" Then
validationFailureIndex = -1
Return True
Else
' Leave any further checks to ASP.NET.
Return MyBase.IsValidRequestString(context, value, _
requestValidationSource__1, collectionKey, _
validationFailureIndex)
End If
Else
' All other HTTP input checks fall back to
' the base ASP.NET implementation.
Return MyBase.IsValidRequestString(context, value, _
requestValidationSource__1, collectionKey, _
validationFailureIndex)
End If
End Function
End Class
using System;
using System.Web;
using System.Web.Util;
public class CustomRequestValidation : RequestValidator
{
public CustomRequestValidation() {}
protected override bool IsValidRequestString(
HttpContext context, string value,
RequestValidationSource requestValidationSource, string collectionKey,
out int validationFailureIndex)
{
//Set a default value for the out parameter.
validationFailureIndex = -1;
// This application does not use RawUrl directly,
// so you can ignore the check for RequestValidationSource.RawUrl.
if (requestValidationSource == RequestValidationSource.RawUrl)
return true;
// Allow the query-string key "data" to have an XML-like value.
if (
(requestValidationSource == RequestValidationSource.QueryString) &&
(collectionKey == "data")
)
{
// The querystring value "<example>1234</example>" is allowed.
if (value == "<example>1234</example>")
{
validationFailureIndex = -1;
return true;
}
else
// Leave any further checks to ASP.NET.
return base.IsValidRequestString(context, value,
requestValidationSource, collectionKey, out
validationFailureIndex);
}
// All other HTTP input checks fall back to
// the base ASP.NET implementation.
else
{
return base.IsValidRequestString(context, value,
requestValidationSource, collectionKey,
out validationFailureIndex);
}
}
}
В следующем примере показано, как настроить ASP.NET для использования пользовательского проверяющего средства.
<httpRuntime requestValidationType="CustomRequestValidation" />
Комментарии
Можно создать пользовательский тип проверки запроса, реализуя RequestValidator тип. Когда ASP.NET вызывает метод IsValidRequestString для проверки запроса, ASP.NET передает параметр requestValidationSource, чтобы указать источник проверяемых данных. Перечисление RequestValidationSource используется для указания источника или типа проверяемых данных запроса. Перечисление указывает тип входных данных HTTP, передаваемых в value параметре IsValidRequestString метода. Перечисление можно использовать как способ вернуться к реализации проверки базового запроса для входных данных HTTP, если вы не хотите проверять пользовательскую логику.
В следующей таблице показано, как интерпретируются значения collectionKey метода и value параметра RequestValidator.IsValidRequestString для каждого элемента RequestValidationSource перечисления.
| Элемент перечисления |
collectionKey Параметр |
value Параметр |
|---|---|---|
Cookies |
Имя файла cookie в коллекции. | Значение в коллекции. |
Files |
Имя отправленного файла в коллекции. | Значение отправленного файла в коллекции. |
Form |
Имя параметра формы в коллекции | Значение параметра формы в коллекции. |
Headers |
Имя заголовка HTTP в коллекции. | Значение заголовка HTTP в коллекции. |
Path |
null (Path не является коллекцией значений). |
Значение поля Path. |
PathInfo |
null (PathInfo не является коллекцией значений). |
Значение поля PathInfo. |
QueryString |
Имя параметра строки запроса в коллекции. | Значение параметра строки запроса в коллекции. |
RawUrl |
null (RawUrl не является коллекцией значений.) |
Значение поля RawUrl. |