2013-12-16 15 views
17

Ich habe ein Problem, webHttpBinding WCF Endpunkt mit HttpClient und die BaseAddress Eigenschaft aufrufen.HttpClient mit BaseAddress

Httpclient

Ich habe eine HttpClient Instanz die BaseAddress Eigenschaft als lokalen Host-Endpunkt angeben.

enter image description here

GetAsync Anruf

Ich rufe dann die GetAsync Methode in der zusätzlichen inforamtion Uri vorbei.

HttpResponseMessage response = await client.GetAsync(string.Format("/Layouts/{0}", machineInformation.LocalMachineName())); 

enter image description here

Service-Endpunkt

[OperationContract] 
[WebGet(UriTemplate = "/Layouts/{machineAssetName}", ResponseFormat = WebMessageFormat.Json)] 
List<LayoutsDto> GetLayouts(string machineAssetName); 

Problem

Das Problem, das ich habe ist, dass das ist, dass /AndonService.svc Teil des Baseaddress so der abgeschnitten wird resultierender Anruf geht zu https://localhost:44302/Layouts/1100-00277 eher, dass https://localhost:44302/AndonService.svc/Layouts/1100-00277 in einem 404 nicht gefunden resultiert.

Gibt es einen Grund, warum die BaseAddress im GetAsync-Aufruf abgeschnitten wird? Wie komme ich hier zurecht?

+0

möglich Duplikat [? Warum ist Httpclient Baseaddress nicht funktioniert] (http://stackoverflow.com/questions/23438416/why-is-httpclient-baseaddress- nicht funktioniert) –

Antwort

40

Geben Sie im BaseAddress einfach den letzten Schrägstrich ein: https://localhost:44302/AndonService.svc/. Wenn Sie dies nicht tun, wird der letzte Teil des Pfades verworfen, da er nicht als "Verzeichnis" betrachtet wird.

Dieses Beispiel zeigt den Unterschied:

// No final slash 
var baseUri = new Uri("https://localhost:44302/AndonService.svc"); 
var uri = new Uri(baseUri, "Layouts/1100-00277"); 
Console.WriteLine(uri); 
// Prints "https://localhost:44302/Layouts/1100-00277" 


// With final slash 
var baseUri = new Uri("https://localhost:44302/AndonService.svc/"); 
var uri = new Uri(baseUri, "Layouts/1100-00277"); 
Console.WriteLine(uri); 
// Prints "https://localhost:44302/AndonService.svc/Layouts/1100-00277" 
+0

Danke, dass es ist. Einfache Lösung –

+2

Bitte sehen Sie meine Frage und Antwort hier: http://stackoverflow.com/questions/23438416/why-is-httpclient-baseaddress-not-working Diese Antwort lässt ein wichtiges Detail. –