2009-05-04 4 views
0

WCF 서비스가 있습니다. Get과 Save라는 두 가지 방법이 있습니다. 내 응용 프로그램이 Get 및 Save를 모두 사용할 수 있어야하는 동안 서비스를 사용하게 될 제 3 자에게 Get 메서드 만 노출하려고합니다.OperationContract에 언급되지 않은 메서드를 사용하는 경우

OperationContract에없는 메소드를 사용하는 방법이 있습니까? 요청의 호스트 이름을 확인하고 응용 프로그램의 호스트 이름 인 경우에만 액세스 권한을 부여 할 생각입니다.

답변

4

GetSet이 모두 OperationContracts 인 두 번째 ServiceContract을 만들지 않는 이유는 무엇입니까? 그런 다음이 두 번째 계약을 체결 할 수있는 사람을 잠글 수 있습니다.

string GetAddressAsString() 
{ 
      RemoteEndpointMessageProperty clientEndpoint = 
         OperationContext.Current.IncomingMessageProperties[ 
         RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; 

        if (clientEndpoint != null) 
        { 
         return String.Format("{0}:{1}", clientEndpoint.Address, clientEndpoint.Port); 
        } 
        return "Failed to identify address"; 
} 
: 여기
[ServiceContract] 
public interface IFoo 
{ 
    [OperationContract] 
    void Get(); 
} 

[ServiceContract] 
public interface IFooInternal : IFoo 
{ 
    [OperationContract] 
    void Set(); 
} 
0

는 호스트의 IP 주소를 식별하는 코드입니다