Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从wcf服务端检测绑定_Wcf_Wcf Binding_Wcf Endpoint - Fatal编程技术网

如何从wcf服务端检测绑定

如何从wcf服务端检测绑定,wcf,wcf-binding,wcf-endpoint,Wcf,Wcf Binding,Wcf Endpoint,假设我有一个wcf服务,其中多个端点具有不同类型的绑定,如tcp、basichttp、wshttp等 <endpoint address ="" binding="wsHttpBinding" contract="NorthwindServices.ServiceContracts.ICustomerService" bindingNamespace = "http://dotnetmentors.com/services/c

假设我有一个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;