0
我使用PollingDuplexHttpBinding
以便客戶端可以在我的應用程序中交換消息。 客戶端通過RegisterClient()
方法註冊,將它們添加到靜態字典中供將來使用。PollingDuplexHttpBinding和應用程序池回收
的代碼看起來是這樣的:
[ServiceContract(Namespace = "...", CallbackContract = typeof(MyServiceCallback))]
public class MyService
{
public static Dictionary<string, MyServiceCallback> Clients =
new Dictionary<string, MyServiceCallback>();
[OperationContract]
public void RegisterClient(string name)
{
Clients[name] =
OperationContext.Current.GetCallbackChannel<MyServiceCallback>();
}
public static void SendMessage(string name, string message)
{
Clients[name].SendMessage(message);
}
}
[ServiceContract]
public interface MyServiceCallback
{
[OperationContract(IsOneWay = true)]
void SendMessage(string message);
}
工作一切良好,當應用程序池得到回收除外。
當然我認識到靜態的東西在這方面並不理想。
哪裏可以保存我的客戶端引用,以便它們在應用程序池recyle中生存?
你使用什麼InstanceContextMode? –
@parapurarajkumar我沒有指定InstanceContextMode,所以我會使用默認值,它相信是InstanceContextMode.PerSession。 –