2010-10-01 77 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或更高版本上可用。

我们说服了我们的基础设施集团升级..现在一切都很好:)