2010-10-01 78 views
1

我有一個雙工服務(單身人士),它曾經與WSDualHttpBinding一起工作,並且在出於性能原因改變爲雙工CustomBinding以支持BinaryEncoding後,它停止工作。跟蹤GetCallBackChannel的問題總是針對所有客戶端請求使用相同的HashCode(在該服務實例內)返回,List認爲它已存在於訂閱的頻道中,並且不會添加到訂閱者列表中。我使用C#3.5WCF CustomBinding + Duplex + BinaryEncoding +沒有安全性無法回撥

請提出一個解決方案..

在此先感謝...

public void Subscribe(string topicName) 
      { 
       try 
       { 
        Notifier.IPublishing subscriber = OperationContext.Current.GetCallbackChannel<IPublishing>(); 
        Notifications.Filter.AddSubscriber(topicName, subscriber); 
       } 
       catch (Exception ex) 
       { 
        ErrorLog.WriteToLog("Subscribe\n" + ex.ToString()); 
       } 
      } 

static public void AddSubscriber(String topicName, IPublishing subscriberCallbackReference) 
     { 
      lock (typeof(Filter)) 
      {     
       if (SubscribersList.ContainsKey(topicName)) 
       { 
        if (!SubscribersList[topicName].Contains(subscriberCallbackReference)) 
        { 
         SubscribersList[topicName].Add(subscriberCallbackReference); 
        } 
       } 
       else 
       { 
        List<IPublishing> newSubscribersList = new List<IPublishing>(); 
        newSubscribersList.Add(subscriberCallbackReference); 
        SubscribersList.Add(topicName, newSubscribersList); 
       } 
      } 
     } 

回答

1

看起來這是一個無證問題與.net 3.5。在.NET 4.0中嘗試了同樣的東西,它就像一個魅力。

我的目標是使用二進制編碼與wsDualHTTPBinding,由於當時Windows Server 2008/IIS7不是一個選項引發此問題。

使用二進制編碼與雙工綁定的首選解決方案是使用nettcpbinding,並且它具有IIS7(除非您是自託管)所需的依賴項,它只在Windows Server 2008或更高版本上可用。

我們說服了我們的基礎設施集團升級..現在一切都很好:)