繁体   English   中英

PollingDuplexHttpBinding和应用程序池回收

[英]PollingDuplexHttpBinding and app pool recycles

我使用PollingDuplexHttpBinding以便客户端可以在我的应用程序中交换消息。 客户端是通过RegisterClient()方法注册的,该方法将客户端添加到静态字典中以备将来使用。

代码如下:

[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);
}

除非应用程序池被回收,否则一切都正常。

当然,我意识到静态方面在这方面并不理想。

保存我的客户引用以使他们在应用程序池中存活下来的好地方在哪里?

我认为您无法让themn在应用程序池回收中幸存下来,因为为此您需要坚持并重新创建渠道...

更好的方法是恕我直言,将您的WCF服务托管在Windows服务中(无需回收应用程序池)以用于此类工作...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM