Hi All,
We are able to create new user successfully on the active directory but the SetPassword method is taking around 1.5 minutes to complete the process. Below is the code of the snippet of SetPassword. Is there any better approach to set the password of new user? #region SetPassword /// <summary> /// This function is used to set user password /// </summary> /// <param name="path"></param> /// <param name="userPassword"></param> /// <remarks> /// </remarks> internal static void SetPassword(string path, string userPassword) { if (_logger.IsDebugEnabled) _logger.Debug("ADHelper.cs : Enter SetPassword"); try { using (DirectoryEntry usr = GetDirectoryEntry(path)) { object ret = usr.Invoke("SetPassword", userPassword); usr.CommitChanges(); usr.Close(); } if (_logger.IsDebugEnabled) _logger.Debug("ADHelper.cs : Exit SetPassword"); } catch (Exception ex) { if (_logger.IsErrorEnabled) _logger.Error("ADHelper.cs : Exception occurred in SetPassword. Message: ", ex); throw ex; } } #endregion Here is our production environment type. • IIS 7 • ASP.NET 3.5 (C#) • Active Directory • Windows Server 2008 R2
Add user snippet #region AddUser /// <summary> /// This function is used to add user to active directory /// </summary> /// <param name="adPath">Active Directory</param> /// <returns>directory entry object</returns> /// <remarks> /// </remarks> public static void AddUser(ADUser adUser) { if (_logger.IsDebugEnabled) _logger.Debug("ADHelper.cs : Enter AddUser"); // Local variables DirectoryEntry oDE = null; DirectoryEntry oDENewUser = null; DirectoryEntries oDEs = null; try { oDE = GetDirectoryEntry(GetADPath(Constants.EnvironmentType.PROD, adUser.UserType)); // 1. Create user account oDEs = oDE.Children; oDENewUser = oDEs.Add(string.Format("{0}=", Constants.ADAttributes.CN) + adUser.UserName, "user"); // 2. Set properties SetProperty(oDENewUser, Constants.ADAttributes.givenName, adUser.FirstName); SetProperty(oDENewUser, Constants.ADAttributes.sn, adUser.LastName); SetProperty(oDENewUser, Constants.ADAttributes.mail, adUser.Email); SetProperty(oDENewUser, Constants.ADAttributes.sAMAccountName, adUser.UserName); oDENewUser.CommitChanges(); // 3. Set password SetPassword(oDENewUser.Path, adUser.Password); // 4. Enable account EnableAccount(oDENewUser); oDENewUser.Close(); oDE.Close(); if (_logger.IsDebugEnabled) _logger.Debug("ADHelper.cs : Exit AddUser"); } catch (Exception ex) { if (_logger.IsErrorEnabled) _logger.Error("ADHelper.cs : Exception occurred in AddUser. Message: ", ex); throw ex; } finally { if (oDENewUser != null) { oDENewUser.Dispose(); oDENewUser = null; } if (oDEs != null) { oDEs = null; } if (oDE != null) { oDE.Dispose(); oDE = null; } } } #endregion THANKS IN ADVANCE!!!