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