static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(HelloWorld), new
Uri("http://localhost:8080/HelloService"));
host.AddServiceEndpoint(typeof(IHello), new BasicHttpBinding(),"Svc");
//host.AddServiceEndpoint(typeof(IHello), new WebHttpBinding(), "Svc");
if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
{
ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
behavior.HttpGetEnabled = true;
behavior.HttpGetUrl = new Uri("http://localhost:8080/HelloService/metadata");
host.Description.Behaviors.Add(behavior);
}
host.Open();
Console.WriteLine("Start Your Service.");
Console.ReadKey();
host.Close();
}
菜狗一个,就这里的俩URI都看了一天,都不知道是不是这样。对于第一个
http://localhost:8080/HelloService
这个是在客户端连接的时候在代码里使用的。
ServiceEndpoint httpEndPoint = new
ServiceEndpoint(ContractDescription.GetContract(typeof(IHello)), new
BasicHttpBinding(), new EndpointAddress("http://localhost:8080/HelloService/Svc"));
而第二个
http://localhost:8080/HelloService/metadata
则是该服务的一个WSDL地址,直接在浏览器里输入既可以看到效果。
我在网上好多博客里看见有人说输入第一个既可以出现效果,经过实际测试,只有第二个才可以。
个人第一次在csdn发东西,也不知道对不对。