Служба собственного размещения WCF - конечные точки в C #
Мои первые несколько попыток создания собственного сервиса. Попытка придумать что-то, что примет строку запроса и вернет некоторый текст, но имеет несколько проблем:
Вся документация говорит о том, что конечные точки создаются автоматически для каждого базового адреса, если они не найдены в файле конфигурации. Мне кажется, это не так, я получаю исключение "Служба имеет нулевые конечные точки приложения ...". Ручное указание базовой конечной точки, как показано ниже, решает эту проблему:
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
Я пытаюсь идти перед бегом, но это просто ползает ...