2009-08-26 4 views
12

Est-il possible de désactiver la validation des requêtes pour HttpHandlers? Un peu d'arrière-plan - J'ai une application Web ASP.NET utilisant un HttpHandler pour recevoir la réponse de paiement de WorldPay. Les journaux IIS montrent que le gestionnaire est appelé correctement à partir de WorldPay, mais le code à l'intérieur du gestionnaire n'est jamais appelé.Comment la demande de validation peut-elle être désactivée pour HttpHandlers?

Si je crée une page ASPX physique et que vous définissez ValidateRequest = false dans l'en-tête et que vous placez le même code dans la méthode Page_Load, le code est appelé sans aucun problème. Ceci résout le problème, même si je préfère m'en tenir à un HttpHandler car c'est mieux adapté à ce type de fonctionnalité, plutôt que d'avoir une page ASPX vide, mais cela dépend de la possibilité de désactiver la requête validation.

L'application Web utilise ASP.NET 2.0 et le serveur est IIS6.

+0

J'ai exactement le même problème. Je dois désactiver la validation de demande pour mon gestionnaire Http dans IIS7. – krisdyson

Répondre

-2

Sur IIS6, vous pouvez simplement ajouter validate="false" dans l'enregistrement web.config.

<add path="handler.axd" type="Foo.Bar.MyHandler" verb="*" validate="false" /> 

Si quelqu'un pouvait faire la lumière sur la façon d'y parvenir dans le mode intégré de IIS7, il serait extrêmement utile aussi.

+2

L'attribut "validate" de l'élément n'a rien à voir avec la validation d'entrée. Il contrôle simplement si IIS essaie de charger la classe de gestionnaire de manière préventive –

5

il est assez facile. Modifiez l'extrait suivant pour qu'il corresponde au chemin du gestionnaire et ajoutez-le à votre fichier web.config:

<configuration> 
    .... 
    <location path="YOUR HANDLER PATH" allowOverride="true"> 
    <system.web> 
     <httpRuntime requestValidationMode="2.0" /> 
     <pages validateRequest="false" /> 
    </system.web> 
    </location> 
</configuration> 
Questions connexes