2013-08-05 4 views
2

이중 모드로 WCF 서비스를 개발하고 nettcpbinding을 사용합니다. 나는 .NET 4.5를 사용한다. 나는 단 하나의 클라이언트와 단 하나의 서버를 가지고 있으며 그 사이에 많은 로직이있다. 클라이언트는 항상 첫 번째 서버와의 통신을 시작합니다. 그 서버가 WCF 서비스 클래스 밖에서 클라이언트 함수를 호출 할 수 있기를 원합니다. 이 목적으로 이중 모드를 사용하려고합니다.WCF duplex : WCF 서비스 클래스 외부에서 호출 콜백

Callback.foo(); 

을하지만 할 때 외부 클래스를 호출 : 내 서비스의 OperationContract를 함수 내에서 내 콜백을 호출 할 때 나는 아무 문제가

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single)] 
public class Service : IService 
{ 

... 

    public IServiceCallback Callback 
    { 
     get 
     { 
      return OperationContext.Current.GetCallbackChannel<IServiceCallback>(); 
     } 
    } 
} 

:

내 WCF 서비스입니다 서비스 예 :

service = new Service(); 
service.Callback.foo(); 

OperationContext.Current의 NullReferenceException이 발생했습니다. 나는 SO와 다른 자원들에 관한 비슷한 문제들에 관한 많은 정보를 발견했으나 나의 문제를 결정하는 것을 도울 수는 없다. 내 문제에 대한 해결책이 있습니까? 아니면 콜백 전화에 대한 해결 방법이 될 수 있습니까? 현재로서는 내 목적에 맞는 WCF 서비스를 하나 더 만들 계획이지만 잘못된 해결책이라고 생각합니다. 관심을 가져 주셔서 감사합니다.

답변

1

OperationContext.Current는 현재 클라이언트 요청을 처리하는 동일한 스레드에서 실행될 때만 의미가 있습니다. 정확히 어디에서 호출했는지는 명시하지 않았습니다.