假设我有一个 WCF 服务,其中多个端点具有不同类型的绑定,如 tcp、basichttp、wshttp 等。
<endpoint address ="" binding="wsHttpBinding"
contract="NorthwindServices.ServiceContracts.ICustomerService"
bindingNamespace = "http://dotnetmentors.com/services/customer" />
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange"/>
<endpoint address ="" binding ="netNamedPipeBinding"
contract ="NorthwindServices.ServiceContracts.ICustomerService"
bindingNamespace = "http://dotnetmentors.com/services/customer" />
<endpoint address="mex" binding="mexNamedPipeBinding"
contract="IMetadataExchange"/>
因此客户端可以使用具有不同绑定的任何端点来调用我的服务。当客户端进行调用以及请求何时发送到服务端时,我如何以编程方式检测正在使用哪个绑定客户端...是 tcp、basichttp、wshttp 吗?
因此,请指导我使用代码示例,帮助我从服务中检测正在使用哪个协议和绑定客户端。谢谢
你到底为什么关心这个?总的来说,您的服务确实不应该关心客户端用于访问服务的绑定,如果这会影响服务行为(在这种情况下,拥有多个单独的服务可能确实更有意义)。
也就是说,我认为一种可能的方法是查看服务的端点地址,我认为您可以使用类似这样的东西(未经测试):
var opCtxt = OperationContext.Current;
var epAddress = opCtxt.EndpointDispatcher.EndpointAddress;
var uri = epAddress.Uri;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)