У меня есть веб-представление, которое берет имя и фамилию человека и пытается создать нового пользователя в активном каталоге, используя контекст именования из первой буквы имени + фамилии.Это прекрасно работает, однако при создании нескольких пользователей с одинаковыми фамилией и именем, которые начинаются с одного и того же символа (т. Е. Andy Gordan => agordan | Alex Gordan => agordan), возникают ошибки, поскольку пользователь с таким именем уже существуетсуществовать.
Как добавить приведенный ниже оператор if / else, который проверяет активный каталог, чтобы увидеть, существует ли имя пользователя, и, если это так, добавить среднюю букву после имени (Alex M Gordan => agordan, следующий пользовательвошел: Энди М Гордан => Амгордан).
[HttpPost]
public ActionResult Index(CreateUser model)
{
//Domain name
var domainName = "XXX";
//Fully distinguished name of OU to create user in
var location = model.Location;
var userOU = "OU=" + location + ",OU=XXX,DC=XXX,DC=com";
using (var pc = new PrincipalContext(ContextType.Domain, domainName, userOU))
{
using (var up = new UserPrincipal(pc))
{
//Creates username and display name from firstname and lastname
**var userName = model.FirstName[0].ToString().ToLower() + model.LastName.ToString().ToLower();**
var displayName = model.FirstName + " " + model.LastName;
var password = "XXX";
up.Name = displayName;
up.DisplayName = displayName;
up.GivenName = model.FirstName;
up.MiddleName = model.MiddleI;
up.Surname = model.LastName;
up.SamAccountName = userName;
up.EmailAddress = userName + "@XXX.com";
up.UserPrincipalName = userName + "@XXX.com";
up.SetPassword(password);
up.Enabled = true;
up.ExpirePasswordNow();
try
{
//Attempt to save the account to AD
up.Save();
}
catch (Exception e)
{
ModelState.AddModelError("", "Exception creating user object. " + e);
return View(model);
}
//Set department to add
DirectoryEntry entry = up.GetUnderlyingObject() as DirectoryEntry;
//DirectoryEntry group = entry.Children.Add("CN="+ )
entry.Properties["department"].Value = model.Department;
//entry.Properties["member"].Add(up);
try
{
//try and commit the changes
entry.CommitChanges();
}
catch(Exception e)
{
ModelState.AddModelError("", "Exception adding department. " + e);
return View(model);
}
}
}
//Redirect to completed page if successful
return RedirectToAction("Completed");
}//POST Index