一般有两种方式实现:
1、通过代码设置直接实现
using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.ServiceModel.Description; using System.Text; using WcfTest; namespace WcfHosting { internal class Program { private static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof (SoapService))) { host.AddServiceEndpoint(typeof(ISoapService), new WSHttpBinding(), "http://127.0.0.1:1234/neohope"); if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null) { ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); behavior.HttpGetEnabled = true; behavior.HttpGetUrl = new Uri("http://127.0.0.1:9999/neohope/metadata"); host.Description.Behaviors.Add(behavior); } host.Opened += delegate { Console.WriteLine("service started, press enter to exit."); }; host.Open(); Console.Read(); } } } }
2、通过配置文件实现
using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.ServiceModel.Description; using System.Text; using WcfTest; namespace WcfHosting { internal class Program { private static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof (SoapService))) { host.Opened += delegate { Console.WriteLine("service started, press enter to exit."); }; host.Open(); Console.Read(); } } } }
app.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="metadataBehavior"> <serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1:9999/neohope/metadata" /> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="metadataBehavior" name="WcfTest.SoapService"> <endpoint address="http://127.0.0.9999/neohope" binding="wsHttpBinding" contract="WcfTest.ISoapService" /> </service> </services> </system.serviceModel> </configuration>