2010-09-25 6 views
2

Я следую примеру http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx, но он не работает, и я все еще получаю ошибку. Вот мой класс, и как я добавить его в WebConfigasp.net 4 пользовательский запрос валидатор не работает

мой WebConfig:

 <httpRuntime requestValidationType="CustomRequestValidation"/> 

мой класс:

public class CustomRequestValidation : RequestValidator 
{ 
public CustomRequestValidation() { } 
protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) 
{ 
    validationFailureIndex = -1; 
    if (requestValidationSource == RequestValidationSource.Path) 
    { 
     // value "&","=" allowed. 
     if (value.Contains("&") || value.Contains("=")) 
     { 
      validationFailureIndex = -1; 
      return true; 
     } 
     else 
     { 
      //Leave any further checks to ASP.NET.   
      return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex); 
     } 
    } 
    else 
    { 
     return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex); 
    } 

    } 
} 

Сведения об ошибке являются:

System.Web.HttpException 
A potentially dangerous Request.Path value was detected from the client (=). 
System.Web.HttpException (0x80004005): A potentially dangerous Request.Path value was detected from the client (:). 
    at System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 
    at System.Web.HttpApplication.ValidateRequestExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
+0

«Я все еще получаю ошибку» «Как мы можем вам помочь, если мы не знаем детали ошибки? – Tomasi

+0

Я добавил данные об ошибке – nLL

ответ

0

Пожалуйста, попробуйте с добавлением пространство имен в запросеValidationType

requestValidationType = "CustomControlTest.CustomRequestValidator"

Здесь CustomControlTest - это пространство имен.

2

У меня тоже была эта проблема, и добавление этого в web.config разрешило проблему.

<httpRuntime requestPathInvalidCharacters="" /> 

По умолчанию, .Net 4.0 отвергает все запросы с <> *% &: \? символы, которые могут вызывать проблему для вас, как будто это было для меня.

[ConfigurationProperty ("requestPathInvalidCharacters", DefaultValue = @ "<,>, *,%, &,:, \ ,?")] общественного струнные RequestPathInvalidCharacters {получить; задавать; }

+0

Исправить. Это то, что мне было нужно: '' – Badgerspot

Смежные вопросы