2014-02-08 7 views
1

내가 여러 엔드 포인트와 하나 개의 WCF 서비스가 wshttp 등 TCP, basichttp, 같은 바인딩의 다른 유형을 가지고 있다고 가정WCF 서비스의 끝에서 바인딩을 검출하는 방법

<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입니까?

그래서 프로토콜 & 바인딩 클라이언트가 사용중인 서비스를 감지하는 데 도움이되는 코드 샘플을 안내해줍니다. 감사합니다

답변

2

왜이 문제에 대해 신경 써야하나요? 서비스가 실제로 서비스에 영향을 미치게 될 경우 클라이언트가 서비스에 어떤 바인딩을 사용했는지 전반적으로 신경 쓰지 않아야합니다 (이 경우 여러 개의 개별 서비스를 갖는 것이 더 합리적 일 수 있습니다).

var opCtxt = OperationContext.Current; 
var epAddress = opCtxt.EndpointDispatcher.EndpointAddress; 
var uri = epAddress.Uri; 
: 말했다

, 나는 한 가지 가능한 방법은 당신이 이런 식으로 뭔가 (테스트되지 않은)을 사용하여 얻을 수 있다고 생각 서비스에 대한 엔드 포인트 주소를보고있을 거라고 생각