一般有两种方式实现:
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>