Mis primeros intentos de crear un servicio de alojamiento propio. Tratando de hacer algo que aceptará una cadena de consulta y devolver algo de texto, pero tienen unos cuantos problemas:Servicio de host de WCF: puntos finales en C#
toda la documentación habla sobre los puntos finales que se crean automáticamente para cada dirección de base si no se encuentran en una configuración archivo. Esto no parece ser el caso para mí, obtengo la excepción "El servicio tiene cero puntos finales de la aplicación ...". Manualmente especificando un punto final de la base de la siguiente manera parece resolver esto:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.ServiceModel.Description; namespace TestService { [ServiceContract] public interface IHelloWorldService { [OperationContract] string SayHello(string name); } public class HelloWorldService : IHelloWorldService { public string SayHello(string name) { return string.Format("Hello, {0}", name); } } class Program { static void Main(string[] args) { string baseaddr = "http://localhost:8080/HelloWorldService/"; Uri baseAddress = new Uri(baseaddr); // Create the ServiceHost. using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress)) { // Enable metadata publishing. ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15; host.Description.Behaviors.Add(smb); host.AddServiceEndpoint(typeof(IHelloWorldService), new BasicHttpBinding(), baseaddr); host.AddServiceEndpoint(typeof(IHelloWorldService), new BasicHttpBinding(), baseaddr + "SayHello"); //for some reason a default endpoint does not get created here host.Open(); Console.WriteLine("The service is ready at {0}", baseAddress); Console.WriteLine("Press <Enter> to stop the service."); Console.ReadLine(); // Close the ServiceHost. host.Close(); } } } }
¿Cómo hago para configurar esto para devolver el valor de nombre en SayHello (string name) cuando se le solicite esta manera: localhost: 8080/HelloWorldService/SayHello? name = Kyle
que estoy tratando de caminar antes de correr, pero esto sólo parece que se arrastra ...
¿Está utilizando .NET 3.5 o .NET 4? La característica "crear puntos finales predeterminados para la dirección base" es algo nuevo en .NET 4: no funcionará en 3.5 –