WCF(winodws服务托管)服务使用一组协议和绑定:http,https,net.tcp,net.pipe。 它使用配置文件设置。
我想构建该服务的演示版本。 此演示将仅使用net.pipe协议。 我如何限制服务只使用这个? 我可以对代码进行更改,但是如何以及在何处进行更改?
答案 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