RequestValidationSource Výčet

Definice

Určuje, jaký druh dat požadavku HTTP se má ověřit.

public enum class RequestValidationSource
public enum RequestValidationSource
type RequestValidationSource = 
Public Enum RequestValidationSource
Dědičnost
RequestValidationSource

Pole

Name Hodnota Description
QueryString 0

Řetězec dotazu.

Form 1

Hodnoty formuláře.

Cookies 2

Soubory cookie žádosti.

Files 3

Nahraný soubor.

RawUrl 4

Nezpracovaná adresa URL. (Část adresy URL za doménou.)

Path 5

Virtuální cesta.

PathInfo 6

Řetězec HTTP PathInfo , což je rozšíření cesty URL.

Headers 7

Hlavičky požadavku.

Příklady

Následující příklad ukazuje, jak vytvořit vlastní třídu validátoru požadavku, která umožňuje pouze konkrétní řetězec pro hodnoty řetězce dotazu.

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

Následující příklad ukazuje, jak nakonfigurovat ASP.NET pro použití vlastního validátoru.

<httpRuntime requestValidationType="CustomRequestValidation" />

Poznámky

Vlastní typ ověření požadavku můžete vytvořit implementací RequestValidator typu. Když ASP.NET zavolá metodu IsValidRequestString k ověření požadavku, ASP.NET předá parametr requestValidationSource k určení zdroje ověřovaných dat. Výčet RequestValidationSource se používá k určení zdroje nebo druhu dat požadavku, která se ověřují. Výčet označuje typ vstupu HTTP, který je předán v value parametru IsValidRequestString metody. Výčet můžete použít jako způsob, jak se vrátit k implementaci ověřování základního požadavku pro vstupy HTTP, pokud nechcete ověřovat pomocí vlastní logiky.

Následující tabulka ukazuje, jak se hodnota collectionKey a value parametr RequestValidator.IsValidRequestString metody interpretuje pro každý člen výčtu RequestValidationSource .

Člen výčtu collectionKey Parametr value Parametr
Cookies Název souboru cookie v kolekci. Hodnota v kolekci.
Files Název nahraného souboru v kolekci. Hodnota nahraného souboru v kolekci.
Form Název parametru formuláře v kolekci Hodnota parametru formuláře v kolekci.
Headers Název hlavičky HTTP v kolekci. Hodnota hlavičky HTTP v kolekci.
Path null (Path není kolekce hodnot). Hodnota pole Cesta.
PathInfo null (PathInfo není kolekce hodnot). Hodnota pole PathInfo.
QueryString Název parametru řetězce dotazu v kolekci. Hodnota parametru řetězce dotazu v kolekci.
RawUrl null (RawUrl není kolekce hodnot.) Hodnota pole RawUrl.

Platí pro

Viz také