以编程方式将元数据端点添加到服务
如果你还希望在没有配置文件的情况下公开元数据,则可以通过编程方式创建 ServiceHost 来构建示例:
public ConsoleHost()
{
mHost = new ServiceHost(typeof(Example), new Uri("http://localhost:8000/Example"), new Uri("net.tcp://9000/Example"));
NetTcpBinding tcp = new NetTcpBinding();
mHost.AddServiceEndpoint(typeof(IExample), tcp, "net.tcp://localhost:9000/Example");
ServiceMetadataBehavior metaBehavior = mHost.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (metaBehavior == null)
{
metaBehavior = new ServiceMetadataBehavior();
metaBehavior.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
metaBehavior.HttpGetEnabled = true;
mHost.Description.Behaviors.Add(metaBehavior);
mHost.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
}
mHost.Open();
}
- 创建一个 ServiceHost 实例,传递具体的类类型和零个或多个 baseaddress Uri。
- 当你使用 mexHttpBinding 时,你必须添加 http:// localhost:8000 /示例 baseaddress
- 在这种情况下构造所需的绑定 NetTcpBinding。
- 调用 AddServiceEndpoint 传递 Address,Binding 和 Contract。 (ABC)。
- 构造 ServiceMetadataBehavior
- 将 HttpGetEnabled 设置为 true
- 将元数据行为添加到 behavior 集合。
- 调用 AddServiceEndpoint 传递常量以进行元数据交换
- 打开主机。