Frage

Ich baue eine REST-Dienst auf WCF, und eine der Methoden, die ich schreibe, ist GetProfile, die das Profil für einen bestimmten Benutzernamen zurückkehren wird. Der Benutzername wird gehören die Domäne des Benutzers, und so wird das folgende Format haben: „DOMAIN \ username“

.

Ich habe daher einen Dienst namens Profiles.svc, die die folgenden Endpunkt eingerichtet hat:

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

Allerdings, wenn ich versuche, den Dienst zu besuchen unter http: //server/profiles.svc/DOMAIN % 5cusername (% 5c die urlencoded Form eines umgekehrten Schrägstrich ist) ich die folgende Fehlermeldung erhalten:

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

Dies geschieht auch, wenn kein Code dort tatsächlich in meiner Implementierung von GetProfile definiert ist, so dass ich glaube, dass der Fehler an dem Punkt geworfen wird WCF versucht, die URI ein Verfahren zu binden.

Gibt es einige Einstellungen, die ich brauche, um meine Web-Service-Konfiguration hinzuzufügen, um Schrägstriche zu ermöglichen URLs in einem REST-WCF-Dienst hinzugefügt werden? Oder umgekehrte Schrägstriche einfach nicht erlaubt?

War es hilfreich?

Lösung

Ich vermute, dass sie einfach nicht in diesem Teil der URL erlaubt. Sie sind fein in dem Query-String, solange sie codiert werden. In der Regel würde ich setze alles in dem Weg Teil der URL nicht, die in Dateinamen ungültig ist (das heißt?).

Vielleicht könnten Sie ein anderes Zeichen verwenden th Domäne aus dem Benutzernamen deliminate.

Sie können auch den Benutzernamen in Domain Name und Benutzername trennen und den normalen Pfad deliminator ‚/‘ verwenden. Ich bin nicht vertraut mit dem diesem genug, um zu wissen, ob dies ist, wie Sie es sicher tun, aber dies würde meine beste Vermutung sein.

[OperationContract]
[WebGet(UriTemplate = "/{domainName}/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String domainName, String username);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top