wcf

¿Cómo puedo usar un servicio WCF?



(1)

Cuando creo un nuevo servicio WCF, puedo crear un nuevo método como este:

[OperationContract] [WebInvoke(Method = "GET", UriTemplate = "TryThis", ResponseFormat = WebMessageFormat.Json)] string TryThis();

Una función que devuelve una cadena simple.

Puedo usarlo con el cliente de prueba WCF y eso funciona. Pero cuando quiero acceder a mi servicio con Chrome, Postman o mi aplicación de Android, no puedo.

He intentado con estas urls:

http://localhost:54792/Service1.svc/TryThis http://tempuri.org/IService1/TryThis

Cuando uso '' http://localhost:54792/Service1.svc '', tengo la página de inicio, así que está bien. Pero no tengo acceso a ningún método de mi servicio.

El error es un error 400. pero no tengo ningún mensaje que indique dónde está este error. No sé si esta es la configuración de mi servidor IIS, si este es mi servicio. Estoy totalmente bloqueado.

Este es mi web.config :

<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/> </appSettings> <system.web> <compilation debug="true" targetFramework="4.7.1" /> <httpRuntime targetFramework="4.7.1"/> </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <protocolMapping> <add binding="basicHttpsBinding" scheme="https" /> </protocolMapping> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <directoryBrowse enabled="true"/> </system.webServer> </configuration>

PD: Ya vi esta publicación: " ¿Cómo puedo acceder a los servicios de WCF utilizando una referencia web? ", Pero eso no me ayudó.


Parece que aloja el servicio WCF en IIS, y si desea publicar un servicio de estilo Restful, puede consultar el siguiente código.
Servidor: IService.cs

namespace WcfService5 { [ServiceContract] public interface IService1 { [OperationContract] [WebGet] string GetData(int value); } }

Servidor: Service.svc.cs

namespace WcfService5 { public class Service1 : IService1 { public string GetData(int value) { return string.Format("You entered: {0}", value); } } }

Web.config.

<system.serviceModel> <services> <service name="WcfService5.Service1"> <endpoint address="" binding="webHttpBinding" contract="WcfService5.IService1" behaviorConfiguration="MyRest"></endpoint> </service> </services> <behaviors> <endpointBehaviors> <behavior name="MyRest"> <webHttp /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <protocolMapping> <add binding="basicHttpsBinding" scheme="https" /> </protocolMapping> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel>

Resultado.

No dude en hacerme saber si hay algo en lo que pueda ayudar.