Asp.net4中实现自定义请求验证

下面演示Asp.net4如何实现一个自定义验证类,对每个查询字符串验证.步骤如下:

1)     继承RequestValidator,只需要重写IsValidRequestString方法,如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Util;

namespace WebApplication1

{

    public class myRequestValidator:RequestValidator

    {

 

        protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex)

        {

            validationFailureIndex = -1;

            if (requestValidationSource == RequestValidationSource.QueryString) //对查询字符串进行验证

            {

                if (value.Contains("<"))//检查是否包含<,当然也可以检查其他特殊符号,或者忽略某些特殊符号.

                {

                    context.Response.Redirect("~/Error.aspx",true);//直接转到自定义的错误页面.

                    return false;

                }

 

            }

            return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);

        }

    }

}

2)     web.config中设置请求验证类型为自定义的类型.如下:

<configuration>

    <system.web>

        <compilation debug="true" targetFramework="4.0" />

      <httpRuntime requestValidationType="WebApplication1.myRequestValidator" />

    </system.web>

</configuration>

现在,我们通过修改url来提交带<特殊符号的页面时,将会被定向到自定义的错误页面,而不是默认错误提示.如下:

 

如下图所示,并没有出现默认的错误提示,而是到了我们自己提供一个错误页面。

 

      

最后,ASP.Net4为我们提供很多扩展点,可以很方便进行扩展,使得我们的应用程序更加灵活可控。

Sissokunxisaa -
共有0个回答