2013-08-05 83 views
2

我使用雙工模式開發WCF服務並使用nettcpbinding。我使用.NET 4.5。我只有一個客戶端和一個服務器,並且它之間有很多邏輯。客戶始終第一次開始與服務器的通信。我希望該服務器可以調用WCF服務類之外的客戶端函數。我嘗試爲此使用雙工模式。WCF雙工:調用外部WCF服務的回調函數

這是我的WCF服務:

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

... 

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

我沒有問題,當我打電話給我服務的OperationContract的職能範圍內我的回調:

Callback.foo(); 

但是,當我試圖把它課外服務例如:

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

我得到了OperationContext.Current的NullReferenceException。我發現了很多關於SO和其他資源類似問題的信息,但它無法幫助我確定我的問題。 有沒有我的問題的任何解決方案或可能是調用回調的解決方法?目前我打算爲我的目的創建一個WCF服務,但我覺得這是一個糟糕的解決方案。感謝您的關注。

回答

1

OperationContext.Current僅在處理當前客戶端請求的同一線程運行時纔有意義。你沒有具體說明你從哪裏調用。