/// <summary>
        /// 卸载连接
        /// </summary>
        public static void UnConnection()
        {
            if (AppGlobal.cache.GetData("WCFClientID") == null)
            {
                return;
            }

            bool               b           = false;
            string             mClientID   = AppGlobal.cache.GetData("WCFClientID").ToString();
            IWCFHandlerService mWcfService = AppGlobal.cache.GetData("WCFService") as IWCFHandlerService;

            if (mClientID != null)
            {
                using (var scope = new OperationContextScope(mWcfService as IContextChannel))
                {
                    try
                    {
                        var router = System.ServiceModel.Channels.MessageHeader.CreateHeader("routerID", "http://www.efwplus.cn/", AppGlobal.cache.GetData("routerID").ToString());
                        OperationContext.Current.OutgoingMessageHeaders.Add(router);
                        var cmd = System.ServiceModel.Channels.MessageHeader.CreateHeader("CMD", "http://www.efwplus.cn/", "Quit");
                        OperationContext.Current.OutgoingMessageHeaders.Add(cmd);
                        b = mWcfService.UnDomain(mClientID);
                    }
                    catch { }
                }
            }
        }
Example #2
0
        /// <summary>
        /// 卸载连接
        /// </summary>
        public void UnConnection()
        {
            if (mConn == null)
            {
                return;
            }
            string             mClientID   = mConn.ClientID;
            IWCFHandlerService mWcfService = mConn.WcfService;

            if (mClientID != null)
            {
                try
                {
                    AddMessageHeader(mWcfService as IContextChannel, "Quit", (() =>
                    {
                        mWcfService.UnDomain(mClientID);
                    }));


                    //mChannelFactory.Close();//关闭通道
                    (mWcfService as IContextChannel).Close();

                    if (timer != null)//关闭连接必须停止心跳
                    {
                        timer.Stop();
                    }
                }
                catch
                {
                    if ((mWcfService as IContextChannel) != null)
                    {
                        (mWcfService as IContextChannel).Abort();
                    }
                }

                mConn = null;
            }
        }