Мои первые несколько попыток создания собственного сервиса. Попытка сделать что-то, что примет строку запроса и вернет некоторый текст, но имеет несколько проблем:
Вся документация говорит о том, что конечные точки создаются автоматически для каждого базового адреса, если они не найдены в файле конфигурации. Мне кажется, это не так, я получаю исключение «У службы нет конечных точек приложения ...». Указание базовой конечной точки вручную, как показано ниже, похоже, решает эту проблему:
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(); } } } }
Как мне настроить это, чтобы возвращать значение имени в SayHello (строковое имя) при запросе таким образом: localhost: 8080/HelloWorldService/SayHello? name = kyle
Я пытаюсь ходить, прежде чем бежать, но это просто похоже на ползание...