在WCF wsDualHttpBinding上下文中跟踪客户端

时间:2011-10-18 11:26:02

标签: c# wcf wcf-binding

我在wcf服务中使用wsDualHttpBinding,并使用以下代码存储客户端通道:

    public static void Subscribe()
    {
        try
        {
            // Subscribe the guest to the beer inventory
            var guest = OperationContext.Current.GetCallbackChannel<ILoggingServiceCallBack>();

            if (!CallbackList.Contains(guest))
            {
                CallbackList.Add(guest);
            }
        }
        catch (Exception ex)
        {
            //do stuff
        }
        finally
        {
           //do stuff
        }

    }

我打电话给那样的客户:

        public static void LoggingCallBack(Action<ILoggingServiceCallBack> callbackNotification)
    {
        try
        {
            if (OperationContext.Current != null)
            {
                var guest = OperationContext.Current.GetCallbackChannel<ILoggingServiceCallBack>();
                if (!CallbackList.Contains(guest))
                {
                    CallbackList.Add(guest);
                }
            }

            foreach (var LoggingCallBack in CallbackList)
            {

       var temp = LoggingCallBack;
                try
                {
                    new Thread(() =>
                    {
                        try
                        {
                            callbackNotification(temp);
                        }
                        catch (Exception ex)
                        {
                            //do something
                        }
                    }).Start();


                }
                catch (Exception ex)
                {
                    //do somethin
                }
            }
        }
        catch (Exception ex)
        {
            //doing something
        }
        finally
        {
         //doing something
        }
    }
我遇到了一些麻烦:

  1. 在我打电话之前,我无法判断客户是否在线 它回来了。
  2. 我需要能够在没有活动后删除客户端 如果我达到1号,我想我能做到这一点。
  3. 识别客户的最佳方式是什么,换句话说是什么 我可以用?
  4. 识别客户的最佳唯一标识符
  5. 如果与客户端的连接出现故障我不知道如何检测 从客户端开始新的,好像我试图这样做,它拒绝,并抛出连接出现故障的异常。
  6. 对不起,如果我提出了多个问题,请就我发布的代码以及上述问题的任何答案发表意见。

0 个答案:

没有答案