PollingDuplexHttpBinding和app pool循环使用

时间:2011-11-14 06:40:33

标签: c# asp.net .net iis-7 pollingduplexhttpbinding

我使用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);
}

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

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

哪里可以保存我的客户端引用,以便它们能够在app pool recyle中存活?

1 个答案:

答案 0 :(得分:0)

我认为你不能让它们在应用程序池回收中存活下来,因为你需要坚持并重新创建频道......

更好的方法是恕我直言,在Windows服务中托管你的WCF服务(没有应用程序池回收),这种东西......