net example ejemplo consumir asp c# .net wcf dotnet-httpclient webhttpbinding

ejemplo - wcf service c# example



HttpClient con BaseAddress (1)

Tengo un problema al llamar a un punto final de WCF webHttpBinding utilizando HttpClient y la propiedad BaseAddress .

HttpClient

HttpClient una instancia de HttpClient especificaba la propiedad BaseAddress como un punto final del host local.

Llamada GetAsync

Luego llamo al método GetAsync pasando la información adicional de Uri.

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

Punto final de servicio

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

Problema

El problema que tengo es que la parte /AndonService.svc de BaseAddress se está truncando, por lo que la llamada resultante va a https://localhost:44302/Layouts/1100-00277 lugar de https://localhost:44302/AndonService.svc/Layouts/1100-00277 resulta en un 404 No encontrado.

¿Hay alguna razón por la que la Dirección de base esté siendo truncada en la llamada GetAsync? ¿Cómo puedo solucionar esto?


En la https://localhost:44302/AndonService.svc/ , solo incluya la barra final: https://localhost:44302/AndonService.svc/ . Si no lo hace, la parte final de la ruta se descarta, ya que no se considera un "directorio".

Este código de ejemplo ilustra la diferencia:

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