private void Accept(object sender, CommunicationAcceptEventArgs e)
        {
            e.Communication.PreviewReceive      += PreviewReceive;
            e.Communication.ReceiveCompleted    += Receive;
            e.Communication.DisconnectCompleted += Disconnect;
            ServiceUser user = (ServiceUser)e.Communication["user"];

            InstanceManager.AddUser(user);
        }
        private void PreviewAccept(object sender, CommunicationAcceptEventArgs e)
        {
            //头信息认证
            if (e.Head == null)
            {
                e.Handled = true;
                return;
            }
            var head = Encoding.UTF8.GetString(e.Head).Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            if (!head.Contains("ApplicationCommunicationFoundation"))
            {
                e.Handled    = true;
                e.FailedData = new byte[] { 0 };
                return;
            }
            if (!head.Contains("Protocol=1.0"))
            {
                e.Handled    = true;
                e.FailedData = new byte[] { 1 };
                return;
            }

            //是否需要认证
            if (Binding.SecurityMode != SecurityMode.Message && e.Credential == null)
            {
                e.Handled = true;
                if (Binding.SecurityMode == SecurityMode.MessageRequired)
                {
                    e.FailedData = new byte[] { 2 }
                }
                ;
                else if (Binding.SecurityMode == SecurityMode.Windows)
                {
                    e.FailedData = new byte[] { 3 }
                }
                ;
                return;
            }

            Credential credential = null;

            if (e.Credential != null)
            {
                if (Binding.SecurityMode != SecurityMode.Windows)
                {
                    credential = new MessageCredential(Encoding.UTF8.GetString(e.Credential.Username), Encoding.UTF8.GetString(e.Credential.Password));
                }
                else
                {
                }
            }
            ServiceUser user = new ServiceUser((ServerClient)e.Communication, credential);

            e.Communication["user"] = user;
        }