2010-06-23 22 views
3

J'ai un service WCF avec cette déclarée opération:Impossible de transmettre "% 26" à une variable WebGet UriTemplate dans un service WCF?

[WebGet(UriTemplate = "Test/{*testString}")] 
public String Test(String testString) 
{ 
    return testString; 
} 

Cependant lorsque l'on tente d'invoquer l'URL Test/You%26Me, IIS renvoie une erreur:

A potentially dangerous Request.Path value was detected from the client (&). 

Mon but est de permettre une esperluette dans l'URI via son URL-Encoding:% 26

Le caractère générique n'a pas aidé. Est-il possible d'empêcher cette erreur sans désactiver les fonctionnalités de sécurité?

Répondre

3

Essayez d'utiliser la propriété de configuration RequestPathInvalidCharacters en Web.config évitant les caractères utilisés comme suit:

<system.web> 
    <httpRuntime requestPathInvalidCharacters="<,>,*,:,\\" /> 
</system.web> 
+0

J'ai oublié de préciser que je ne suis pas en utilisant .NET 4.0 encore - est-il une option similaire pour .NET 3.5 ? – JoeGaggler

+0

Je crains que la seule option dans 3.5 est d'implémenter RequestValidator personnalisé: http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx –

+0

C'est parfait, merci! – JoeGaggler