RequestValidationSource Wyliczenie

Definicja

Określa, jakiego rodzaju dane żądania HTTP mają być weryfikowane.

public enum class RequestValidationSource
public enum RequestValidationSource
type RequestValidationSource = 
Public Enum RequestValidationSource
Dziedziczenie
RequestValidationSource

Pola

Nazwa Wartość Opis
QueryString 0

Ciąg zapytania.

Form 1

Wartości formularza.

Cookies 2

Pliki cookie żądania.

Files 3

Przekazany plik.

RawUrl 4

Nieprzetworzonego adresu URL. (Część adresu URL po domenie).

Path 5

Ścieżka wirtualna.

PathInfo 6

Ciąg HTTP PathInfo , który jest rozszerzeniem ścieżki adresu URL.

Headers 7

Nagłówki żądania.

Przykłady

W poniższym przykładzie pokazano, jak utworzyć niestandardową klasę modułu sprawdzania poprawności żądań, która zezwala tylko na określony ciąg dla wartości ciągu zapytania.

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);
        }
    }
}

W poniższym przykładzie pokazano, jak skonfigurować ASP.NET do używania niestandardowego modułu sprawdzania poprawności.

<httpRuntime requestValidationType="CustomRequestValidation" />

Uwagi

Typ weryfikacji żądania niestandardowego można utworzyć, implementując RequestValidator typ. Gdy ASP.NET wywołuje metodę IsValidRequestString w celu zweryfikowania żądania, ASP.NET przekazuje parametr requestValidationSource w celu określenia źródła zweryfikowanych danych. Wyliczenie RequestValidationSource służy do określania źródła lub rodzaju weryfikowanych danych żądania. Wyliczenie wskazuje typ danych wejściowych HTTP przekazywanych w value parametrze IsValidRequestString metody . Możesz użyć wyliczenia jako sposobu powrotu do implementacji weryfikacji żądania podstawowego dla danych wejściowych HTTP, jeśli nie chcesz weryfikować przy użyciu logiki niestandardowej.

W poniższej tabeli przedstawiono sposób interpretowania wartości collectionKey i value parametru RequestValidator.IsValidRequestString metody dla każdego elementu członkowskiego RequestValidationSource wyliczenia.

Element członkowski wyliczenia collectionKey Parametr value Parametr
Cookies Nazwa pliku cookie w kolekcji. Wartość w kolekcji.
Files Nazwa przekazanego pliku w kolekcji. Wartość przekazanego pliku w kolekcji.
Form Nazwa parametru formularza w kolekcji Wartość parametru formularza w kolekcji.
Headers Nazwa nagłówka HTTP w kolekcji. Wartość nagłówka HTTP w kolekcji.
Path null (Path nie jest kolekcją wartości). Wartość pola Ścieżka.
PathInfo null (PathInfo nie jest kolekcją wartości). Wartość pola PathInfo.
QueryString Nazwa parametru ciągu zapytania w kolekcji. Wartość parametru ciągu zapytania w kolekcji.
RawUrl null (RawUrl nie jest kolekcją wartości). Wartość pola RawUrl.

Dotyczy

Zobacz też