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

Определение

Задает тип данных HTTP-запроса, которые необходимо проверить.

public enum class RequestValidationSource
public enum RequestValidationSource
type RequestValidationSource = 
Public Enum RequestValidationSource
Наследование
RequestValidationSource

Поля

Cookies 2

Файлы cookie запроса.

Files 3

Загруженные файлы.

Form 1

Значения формы.

Headers 7

Заголовки запроса.

Path 5

Виртуальный путь.

PathInfo 6

Строка HTTP PathInfo, представляющая собой расширение пути URL-адреса.

QueryString 0

Строка запроса.

RawUrl 4

Исходный URL-адрес. (Часть URL-адреса после домена).

Примеры

В следующем примере показано, как создать класс проверяющего элемента управления пользовательского запроса, который допускает только определенную строку для значений строки запроса.

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 является коллекцией значений). Значение поля пути.
PathInfo null (не PathInfo является коллекцией значений). Значение поля PathInfo.
QueryString Имя параметра строки запроса в коллекции. Значение параметра строки запроса в коллекции.
RawUrl null (не RawUrl является коллекцией значений.) Значение поля Равурл.

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

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