Question

Je construis un service REST sur WCF, et l’une des méthodes que j’écris est GetProfile, qui renverra le profil pour un nom d’utilisateur donné. Le nom d'utilisateur comprendra le domaine de l'utilisateur et aura donc le format suivant: "DOMAIN \ username".

J'ai donc un service appelé Profiles.svc, qui a le point de terminaison suivant configuré:

[OperationContract]
[WebGet(UriTemplate = "/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String username);

Cependant, lorsque j'essaie de visiter le service à l'adresse http: //server/profiles.svc/DOMAIN % 5cusername (% 5c correspond à la forme d'une barre oblique inversée codée). Le message d'erreur suivant s'affiche:

Server error in '/' Application
HTTP Error 400 - Bad Request

Cela se produit même lorsqu'il n'y a pas de code défini dans mon implémentation de GetProfile. Je pense donc que l'erreur est générée au point où WCF tente de lier l'URI à une méthode.

Dois-je ajouter certains paramètres à la configuration de mon service Web afin de permettre l’ajout de barres obliques inverses aux URL d’un service WCF REST? Ou les barres obliques inverses sont-elles tout simplement interdites?

Était-ce utile?

La solution

Je soupçonne qu’ils ne sont tout simplement pas autorisés dans cette partie de l’URL. Ils vont bien dans la chaîne de requête tant qu'ils sont codés. En règle générale, je ne mettrais rien dans la partie du chemin de l'URL qui ne soit pas valide dans le nom du fichier (c'est-à-dire??).

Peut-être pourriez-vous utiliser un caractère différent pour supprimer le nom de domaine du nom d'utilisateur.

Vous pouvez également séparer le nom d'utilisateur en nom de domaine et nom d'utilisateur et utiliser le chemin d'accès normal "/". Je ne suis pas assez au courant de cela pour savoir si c’est ainsi que vous le ferez, mais ce serait ma meilleure hypothèse.

[OperationContract]
[WebGet(UriTemplate = "/{domainName}/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String domainName, String username);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top