我有一个 Duplex 服务(Singleton),它曾经与 WSDualHttpBinding 一起使用,并且出于性能原因将其更改为 duplex CustomBinding 以支持 BinaryEncoding 后,它停止了工作。对于所有客户端请求,问题跟踪到 GetCallBackChannel 始终返回相同的 HashCode(在该服务实例内),并且列表认为它已经存在于订阅的频道中并且不会添加到订阅者列表中。我正在使用 C# 3.5
请提出解决方案..
提前致谢...
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);
}
}
}