以前は WSDualHttpBinding で動作していた Duplex サービス (Singleton) があり、パフォーマンス上の理由から BinaryEncoding をサポートするために duplex CustomBinding に変更した後、動作しなくなりました。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);
}
}
}