2010-10-21 43 views
2

最初,在升级到ASP.Net 4.0后,我收到请求验证错误,我想停止。我能够通过设置使用请求验证的2.0的httpRuntime要做到这一点,这里所说:如何禁用请求验证并在ASP.Net 4.0中启用较长的查询字符串MVC-2

Request Validation - ASP.NET MVC 2

不过,我还需要允许更长的查询字符串,并希望利用4.0 maxQueryStringLength的属性。

但是,启用2.0请求验证时,此属性不起作用。

有谁知道我怎么能让两者一起工作?或者这是不可能的?

谢谢!

回答

2

我,似乎工作的答案......这是创造一个自己的RequestValidator的情况下,允许通过的所有请求的应用程序代码,就像这样:

public class ValidateAllRequests: RequestValidator 
{ 
    protected override bool IsValidRequestString(System.Web.HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) 
    { 
     validationFailureIndex = -1; 
     return true; 
    } 
} 

只要可以发现通过应用程序(即在bin文件夹或GAC中),您可以覆盖默认验证程序...

<httpRuntime requestValidationType="RequestValidators.ValidateAllRequests, RequestValidators" maxQueryStringLength="2048" />