3

http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspxの例に従っていますが、機能していないようで、まだエラーが発生します。ここに私のクラスと、それを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)
4

2 に答える 2

3

私にもこの問題があり、これをweb.configに追加すると問題が解決しました。

<httpRuntime requestPathInvalidCharacters="" />

デフォルトでは、.Net4.0は<>*%&:\?を含むすべてのリクエストを拒否します。私のようにあなたに問題を引き起こしているかもしれないキャラクター。

[ConfigurationProperty( "requestPathInvalidCharacters"、DefaultValue = @ "<、>、*、%、&、:、\ ,?")] public string RequestPathInvalidCharacters {get; セットする; }

于 2011-11-05T00:48:07.580 に答える
0

requestValidationType に名前空間を追加してみてください

requestValidationType="CustomControlTest.CustomRequestValidator"

ここで CustomControlTest は名前空間です。

于 2011-07-12T11:47:23.790 に答える