wcf中元数据的发布通过一个特殊的服务行为ServiceMetadataBehavior来实现。本文实例为服务应用ServiceMetadataBehavior服务行为,并采用基于HTTP-GET获取方式,元数据的发布地址通过ServiceMetadataBehavior的HttpGetUrl指定。在服务成功寄宿后,我们可以在浏览器中通过HttpGetUrl指定的地址来获取服务的元数据,这样就可以得到以WSDL形式体现的服务元数据。
下面是服务端的配置文件。
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="true"
httpGetUrl="http://localhost:3721/calculatorservice/metadata" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="Artech.WcfServices.Service.CalculatorService"
behaviorConfiguration="metadataBehavior" >
<endpoint address="http://localhost:3721/calculatorservice"
binding="wsHttpBinding"
contract="Artech.WcfServices.Service.Interface.ICalculator" />
</service>
</services>
</system.serviceModel>
</configuration>
下面是服务寄宿的代码。
using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
{
host.Opened += delegate
{
Console.WriteLine("CalculaorService已经启动,按任意键终止服务!");
};
host.Open();
Console.Read();
}
成功寄宿服务后,在浏览器中输入地址http://localhost:3721/calculatorservice/metadata可以获取到服务的元数据,可用通过元数据生成服务调用的代理类。