2010-10-21 2 views
2

Initialement, après la mise à niveau vers ASP.Net 4.0, je recevais des erreurs de validation de la requête, que je voulais arrêter. J'ai pu le faire en réglant le httpRuntime à utiliser 2.0 de la validation de la demande, comme mentionné ici:Comment désactiver la validation des demandes ET activer des chaînes de requête plus longues dans ASP.Net 4.0 MVC-2

Request Validation - ASP.NET MVC 2

Cependant, je dois aussi permettre querystrings plus, et que vous souhaitez utiliser la version 4.0 maxQueryStringLength attribut. Toutefois, cet attribut n'a aucun effet lorsque la validation de la requête 2.0 est activée.

Est-ce que quelqu'un sait comment je peux faire travailler les deux? Ou est-ce simplement impossible?

Merci!

Répondre

2

J'ai une réponse qui semble fonctionner ... c'est un cas de créer sa propre RequestValidator qui permet à travers toutes les demandes au code d'application, comme suit:

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; 
    } 
} 

Tant qu'il se trouve par l'application (c'est-à-dire dans le dossier bin ou GAC), vous pouvez remplacer le validateur par défaut ...

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