/// <summary>
/// <httpRuntime requestValidationType="xxx.CustomRequestValidator" />
/// </summary>
public class CustomRequestValidator : RequestValidator
{
public readonly static object CustomRequestValidatorKey = new object(); protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource,
string collectionKey, out int validationFailureIndex)
{
var obj = context.Items[CustomRequestValidatorKey];
if (obj != null)
{
var notValid = (RequestNotValidationSource)obj;
if (notValid == RequestNotValidationSource.All)
{
validationFailureIndex = ;
return true;
}
RequestNotValidationSource tmp;
if (Enum.TryParse(requestValidationSource.ToString(), out tmp) && notValid.HasFlag(tmp))
{
validationFailureIndex = ;
return true;
}
}
return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);
}
} /// <summary>
/// 重写验证逻辑
/// </summary>
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public class CustomRequestValidatorAttribute : FilterAttribute, IAuthorizationFilter
{
/// <summary>
/// 不验证哪些数据
/// </summary>
public RequestNotValidationSource? NotValidationSource { get; set; } public CustomRequestValidatorAttribute()
{
NotValidationSource = null;
} /// <summary>
///
/// </summary>
/// <param name="notValidationSource">不验证哪些数据</param>
public CustomRequestValidatorAttribute(RequestNotValidationSource notValidationSource)
{
NotValidationSource = notValidationSource;
} public virtual void OnAuthorization(AuthorizationContext filterContext)
{
filterContext.HttpContext.Items[CustomRequestValidator.CustomRequestValidatorKey] = NotValidationSource;
} } /// <summary>
/// 不验证哪些数据
/// </summary>
[Flags]
public enum RequestNotValidationSource
{
QueryString = ,
Form = ,
Cookies = ,
Files = ,
RawUrl = ,
Path = ,
PathInfo = ,
Headers = ,
All =
}

asp.net mvc重写RequestValidator的更多相关文章

  1. 【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾

    在搜索引擎优化领域,静态网页对于SEO的优化有着很大的好处,因此很多人就想把自己的网站的一些网页做成伪静态.我们现在在网络上发现很多博客网站.论坛网站.CMS内容管理系统等都有使用伪静态这一种情况,伪 ...

  2. ASP.NET MVC 重写RazorViewEngine实现多主题切换

    在ASP.NET MVC中来实现主题的切换一般有两种方式,一种是通过切换皮肤的css和js引用,一种就是通过重写试图引擎.通过重写试图引擎的方式更加灵活,因为我不仅可以在不同主题下面布局和样式不一样, ...

  3. ASP.NET MVC Bundling and RequireJS

    关于ASP.NET MVC Bundling and RequireJS的取舍问题,最近比较困惑,我希望有一种方式可以结合两者的优点.作为.NET程序员,难道你没有过这方面的困惑吗? 因为我感觉各自都 ...

  4. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

  5. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...

  6. ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. ...

  7. [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...

  8. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase

    原文地址:http://www.51csharp.com/MVC/882.html   ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL 引言-- 在初级篇中,我们 ...

  9. 【转】Asp.net MVC 通过自定义ControllerFactory实现构造器注入(重写DefaultControllerFactory)

    [转]Asp.net MVC 通过自定义ControllerFactory实现构造器注入 一.重写ControllerFactory的GetControllerInstance ControllerF ...

随机推荐

  1. Objective-C内存管理教程和原理剖析(三)

    初学Objective-C的朋友都有一个困惑,总觉得对Objective-C的内存管理机制琢磨不透,程 序经常内存泄漏或莫名其妙的崩溃.我在这里总结了自己对Objective-C内存管理机制的研究成果 ...

  2. OkHttp–支持SPDY协议的高效HTTP库

    Android为我们提供了两种HTTP交互的方式: HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池, ...

  3. C#时间格式之GMT时间的格式

    GMT:格林尼标准时间  北京时间=GMT时间+8小时 DataTime nowDate = DataTime.Now; nowDate.toString("r");    效果为 ...

  4. asp.net软件测试学习

    ormaping类是,将数据操作封装起来的一种数据操作方法,在测试的时候,如果说,insert之后对obj对象赋值赋值,每个属性应该对应自己的objDataRow["REGISTERID&q ...

  5. UnicodeEncodeError: 'latin-1' codec can't encode character 解决sae flask 中文问题

    #encoding=utf-8 #中文编码支持 import MySQLdb from flask import Flask, g, request app = Flask(__name__) app ...

  6. 展开BOM并使用最终用量的算法(转载)

    本文系转载子ITPUB,如果有侵犯您权益的地方,烦请及时的告知与我,我即刻将停止侵权行为: 网址:http://www.itpub.net/thread-1020586-1-1.html http:/ ...

  7. 【转】CoreData以及MagicalRecord (一)

    先粗略的了解下CoreData中的一些核心概念 1. CoreData 的核心概念 先上两幅关键的概念图 (1)NSManagedObjectModel 托管对象模型(MOM)是描述应用程序的数据模型 ...

  8. I - Doing Homework again

    I - Doing Homework again Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  9. 第三条:私有化构造器或者枚举类型强化Singleton属性

    1.5版本之前,我们通常实现单例模式有两种方式: 两种方法前提都是私有化构造器,然后通过不同的方式获取对象. 第一种:通过公共的静态变量获取 public class Elivs{ // 私有化构造器 ...

  10. MYSQL 退出的三个方式

    方式1: exit 方式2: quit 方式3: \q