RequestValidationSource Перечисление

Определение

Указывает тип данных HTTP-запроса для проверки.

public enum class RequestValidationSource
public enum RequestValidationSource
type RequestValidationSource = 
Public Enum RequestValidationSource
Наследование
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.

Применяется к

См. также раздел