У меня есть два сайта, у каждого есть свой планировщик с достаточными правами для выполнения своей работы.Мы создали приложение, позволяющее им быстро добавлять пользователя в AD со всеми необходимыми ему функциями.Проблема в том, что иногда ученик временно переходит с одного сайта на другой.Находясь на новом сайте, им потребуется доступ ко всем их оригинальным материалам, а также доступ к новым сайтам.
У меня была просьба добавить кнопку, которая позволит им быстро добавлять другие группы сайтов, а не удалять исходные группы сайтов.
Я получаю ошибку:
Error adding User to Group.
System.Directory.Services.AccountManagement.NoMatchingPrincipalException:
No principal matching the specified paramenters was found
at
System.DirectoryServices.AccountManagement.principalCollection.add(principalContext context, identitytype itedentity type, string identitiyvalue)
at AddStudentUser.Form2.AddUserToGroup_fm2(string userID, string groupName, string siteName) identitiyvalue
c:\projects\AddStudentUser\AddStudentUser\Form2.cs:line 113
Вот код, который я звоню:
private void btnUpdateExit_Click(object sender, EventArgs e)
{
//userUPN will equal Loginname@domain.com
string userUPN = this.tbUserLoginName.Text.Trim().ToString() + Form1.Globs.strUPN;
if (this.cbSite1.Checked == true & this.cbSite1.Enabled==true)
{
AddUserToGroup_fm2(userUPN, "Site1", Form1.Globs.strSUUADC);
AddUserToGroup_fm2(userUPN, "Crew_Site1", Form1.Globs.strSite1ADC);
AddUserToGroup_fm2(userUPN, "WWW-Site1", Form1.Globs.strSite1ADC);
MessageBox.Show("User has been added to the Site1 Groups.");
}
if (this.cbSite2.Checked == true & this.cbSite2.Enabled == true)
{
AddUserToGroup_fm2(userUPN, "Site2", Form1.Globs.strWRIADC);
AddUserToGroup_fm2(userUPN, "Crew_Site2", Form1.Globs.strSite2ADC);
AddUserToGroup_fm2(userUPN, "WWW-Site2", Form1.Globs.strSite2ADC);
MessageBox.Show("User has been added to the Site2 Groups.");
}
this.Close();
}
public void AddUserToGroup_fm2(string userId, string groupName, string siteName)
{
try
{
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, siteName))
{
GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, groupName);
group.Members.Add(pc, IdentityType.UserPrincipalName, userId);
group.Save();
}
}
catch (Exception E)
{
MessageBox.Show("Error adding User to Group. " + E);
}
}
Странная вещь в том, что если я добавлю нового пользователяодин и тот же код в другой форме работает без проблем.Сначала я пытался вызвать этот код, но получал ту же ошибку, что и сейчас.Я хотел отделить код, чтобы можно было вносить в него изменения, не затрагивая исходную функцию, поскольку он отлично работает при добавлении нового пользователя в существующие группы.
Любая помощь приветствуется.