I`m новичок в Active Directory ....Как обрабатывать исключение DirectoryEnter.CommitChange()? C#
Когда я проверить и отредактировать приложение о Add User And Department
в Active Directory с помощью C#,
в DirectoryEnter.CommitChage()
делает исключение, как это.
The directory service cannot perform the requested operation on the RDN attribute of an object.
Но я уже говорил ранее, я не знаю, хорошо об Active Directory, я путаю, как справиться с этим.
Пожалуйста, помогите мне. код ниже.
void CreateADUser(string ppk,string pk,DataRow row)
{
string pass = GetPass(pk,row,LogSections.AD);
DirectoryEntry addept = adm.FindOU(ppk);
string sOU = adm.GetPrincipalPath(addept);
var aduser = adm.CreateNewUser(sOU, pk, pass, pk, null, null, adm.sDomain);
SetAdUserProperties(pk, pass, row);
MoveUser(ppk,pk);
}
void SetAdUserProperties(string pk,string pass,DataRow row)
{
if (row == null) return;
List<ADMapping> MappingPatterns = GetAdMappings(Words.User,false);
var colnames = Tool.GetColNames(row);
var aduser = adm.GetUser(pk);
var de=aduser.GetUnderlyingObject() as DirectoryEntry;
foreach (var ADMap in MappingPatterns)
{
string val = ADMap.Mapping;
val=Util.ReplaceColPattern(val, row);
SetProperty(de, ADMap.CN, val);
}
if (!string.IsNullOrWhiteSpace(pass))
{
var UserPkColumn = AppConfigHelper.GetAppString(Words.SourceUserPKColumn);
UserPkColumn = Util.GetActualColName(UserPkColumn);
aduser.SetPassword(pass);
QueryHelper.Update(QueryHelper.ConnectionString, Words.ShadowUserTable
,new SqlParameter[] { new SqlParameter("@passwd", pass) }
, new SqlParameter("@"+UserPkColumn,pk));
}
aduser.Save();
}
public void SetProperty(DirectoryEntry oDE, string sPropertyName, object sPropertyValue)
{
if (sPropertyValue != null && !string.IsNullOrWhiteSpace(sPropertyValue.ToString()))
{
if (oDE.Properties.Contains(sPropertyName))
{
oDE.Properties[sPropertyName].Value = sPropertyValue;
}
else
{
oDE.Properties[sPropertyName].Add(sPropertyValue);
}
try
{
oDE.CommitChanges(); //exception here.
oDE.Close();
}
catch (Exception)
{
}
}
}
К сожалению I'm поздно, чтобы увидеть ответ. Я добавил ваш код, но он по-прежнему выбрасывает исключение ... –