RequestValidationSource 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定要验证何种 HTTP 请求数据。
public enum class RequestValidationSource
public enum RequestValidationSource
type RequestValidationSource =
Public Enum 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 调用 方法来验证请求时,ASP.NET 传递参数以 IsValidRequestString 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 |
集合中查询字符串参数的名称。 | 集合中 query-string 参数的值。 |
RawUrl |
null (RawUrl 不是 values.) |
RawUrl 字段的值。 |