WCF:如何限制使用某些协议?

时间:2012-08-20 15:54:03

标签: wcf protocols restrict

WCF(winodws服务托管)服务使用一组协议和绑定:http,https,net.tcp,net.pipe。 它使用配置文件设置。

我想构建该服务的演示版本。 此演示将仅使用net.pipe协议。 我如何限制服务只使用这个? 我可以对代码进行更改,但是如何以及在何处进行更改?

1 个答案:

答案 0 :(得分:1)

ServiceHost拥有ChannelDispatcher财产中ChannelDispatchers的集合。您可以使用ChannelDispatcher.BindingName找出服务中使用的绑定名称。

ServiceHost host = new ServiceHost(typeof(SomeService), baseAddress))
//configure service endpoints here
host.Open();

#if DEMO_MODE
foreach (ChannelDispatcher dispatcher in host.ChannelDispatchers)
{
   //binding name includes namespace. Example - http://tempuri.org/:NetNamedPipeBinding
   var bindingName = dispatcher.BindingName;
   if (!(bindingName.EndsWith("NetNamedPipeBinding") || bindingName.EndsWith("MetadataExchangeHttpBinding")))
     throw new ApplicationException("Only netNamedPipeBinding is supported in demo mode");
}
#endif