/// <summary> /// 通过库连接名称获取库 /// </summary> /// <param name="name"></param> /// <returns></returns> public static Vault GetVaultByName(string name) { var clientApp = new MFilesClientApplication(); var vc = clientApp.GetVaultConnection(name); return(vc.BindToVault(IntPtr.Zero, true, true)); }
/// <summary> /// /// </summary> /// <param name="user"></param> /// <param name="vault"></param> /// <param name="forceLogout">是否强制退出</param> /// <param name="vaultName">库名称</param> /// <returns></returns> public static Vault GetUserVault(UserDto user, VaultDto vault, bool forceLogout, string vaultName) { log.Info(" GetUserVault username="******",vault=" + vault.Name); if (VaultGuids.Contains(vault.Guid)) { return(GetVault(user, vault.Guid)); } vaultName = vaultName ?? vault.Name; var app = new MFilesClientApplication(); var removeConns = new List <VaultConnection>(); try { var sameVC = app.GetVaultConnection(vault.Name); var needR = Need2Remove(vault, sameVC, vaultName); if (needR) { removeConns.Add(sameVC); } } catch (Exception ex) { log.Info(string.Format("GetUserVault error:{0},{1}", vaultName, ex.Message)); } var conns = app.GetVaultConnectionsWithGUID(vault.Guid); VaultConnection connection = null; foreach (VaultConnection vc in conns) { var needR = Need2Remove(vault, vc, vaultName); if (needR) { removeConns.Add(vc); } else { connection = vc; } } if (removeConns.Count > 0) { foreach (var vc in removeConns) { app.RemoveVaultConnection(vc.Name, vc.UserSpecific); } } if (connection == null) { connection = new VaultConnection { AuthType = MFAuthType.MFAuthTypeSpecificWindowsUser, AutoLogin = false, NetworkAddress = vault.Server.Ip, Endpoint = vault.Server.Port, Name = vaultName, ServerVaultName = vault.Name, ServerVaultGUID = vault.Guid, UserName = user.UserName, Password = user.Password, Domain = user.Domain, UserSpecific = true, ProtocolSequence = "ncacn_ip_tcp" }; if (String.IsNullOrEmpty(user.Domain)) { connection.AuthType = MFAuthType.MFAuthTypeSpecificMFilesUser; } app.AddVaultConnection(connection); } //var now = DateTime.Now; Vault mfVault = null; if (connection.IsLoggedIn()) { var v = connection.BindToVault(IntPtr.Zero, true, true); if (v != null) { if (forceLogout) { try { v.LogOutWithDialogs(IntPtr.Zero); } catch { log.Info("Remote Loggin time11111: " + DateTime.Now); } } else { var accountName = v.SessionInfo.AccountName; var index = accountName.IndexOf('\\'); var userName = accountName.Substring(index + 1); if (StringComparer.OrdinalIgnoreCase.Equals(userName, user.UserName)) { mfVault = v; } else { try { v.LogOutWithDialogs(IntPtr.Zero); } catch { log.Info("Remote Loggin time 22222: " + DateTime.Now); } } } } } log.Info("Remote Loggin time: " + DateTime.Now); try { //now = DateTime.Now; var has = false; log.Info(string.Format(" in getuservault,userName={0}, pwd={1}, domai={2}", user.UserName, user.Password, user.Domain)); if (forceLogout) { mfVault = LoginVault(connection, user.UserName, user.Password, user.Domain); has = true; } if (mfVault == null || !has) { mfVault = LoginVault(connection, user.UserName, user.Password, user.Domain); } log.Info("Loggin time: " + DateTime.Now); } catch { log.Info("Remote Loggin time: 33333" + DateTime.Now); } VaultGuids.Add(vault.Guid); return(mfVault); }