c# - BaseAddressを持つHttpClient



.net wcf (1)

BaseAddressには、最後のスラッシュ( https://localhost:44302/AndonService.svc/ます。 そうしないと、パスの最後の部分は破棄されます。なぜなら、 "ディレクトリ"とはみなされないからです。

このサンプルコードは、この違いを示しています。

// 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"

HttpClientBaseAddressプロパティを使用してwebHttpBinding WCFエンドポイントを呼び出す際に問題がBaseAddressました。

HttpClient

BaseAddressプロパティをローカルホストエンドポイントとして指定するHttpClientインスタンスを作成しました。

GetAsync呼び出し

次に、追加のUri情報を渡すGetAsyncメソッドを呼び出します。

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

サービスエンドポイント

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

問題

私が抱えている問題は、 /AndonService.svc部分が切り詰められているため、結果の呼び出しはhttps://localhost:44302/Layouts/1100-00277https://localhost:44302/AndonService.svc/Layouts/1100-00277結果404が見つかりませんでした。

GetAsync呼び出しでBaseAddressが切り詰められる理由はありますか? これをどうやって回避するのですか?





webhttpbinding