如何处理DirectoryCenter.CommitChange()异常??C#
我是Active Directory的新手 当我使用C#检查并编辑关于如何处理DirectoryCenter.CommitChange()异常??C#,c#,exception,active-directory,C#,Exception,Active Directory,我是Active Directory的新手 当我使用C#检查并编辑关于将用户和部门添加到Active Directory的应用程序时 在目录enter.CommitChage()中,会出现如下异常 目录服务无法对对象的RDN属性执行请求的操作。 但我之前提到过,我对Active Directory不太了解,我不知道如何处理它 请有人帮帮我。代码如下 void CreateADUser(string ppk,string pk,DataRow row) { string pass = Ge
将用户和部门添加到Active Directory的应用程序时
在目录enter.CommitChage()
中,会出现如下异常
目录服务无法对对象的RDN属性执行请求的操作。
但我之前提到过,我对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)
{
}
}
}
void CreateADUser(字符串ppk、字符串pk、数据行)
{
字符串pass=GetPass(pk、row、LogSections.AD);
DirectoryEntry addept=adm.FindOU(ppk);
字符串sOU=adm.GetPrincipalPath(addept);
var aduser=adm.CreateNewUser(sOU、pk、pass、pk、null、null、adm.sDomain);
SetAdUserProperties(主键、通过、行);
移动用户(ppk,pk);
}
void SetAdUserProperties(字符串主键、字符串传递、数据行)
{
if(row==null)返回;
List MappingPatterns=GetAdMappings(Words.User,false);
var colnames=Tool.GetColNames(行);
var aduser=adm.GetUser(pk);
var de=aduser.getUnderlineObject()作为DirectoryEntry;
foreach(映射模式中的var ADMap)
{
字符串val=ADMap.Mapping;
val=Util.ReplaceColPattern(val,行);
SetProperty(de,ADMap.CN,val);
}
如果(!string.IsNullOrWhiteSpace(pass))
{
var UserPkColumn=AppConfigHelper.GetAppString(Words.SourceUserPKColumn);
UserPkColumn=Util.GetActualColName(UserPkColumn);
aduser.SetPassword(pass);
Update(queryhelp.ConnectionString,Words.ShadowUserTable
,new SqlParameter[]{new SqlParameter(“@passwd”,pass)}
,新的SqlParameter(“@”+UserPkColumn,pk));
}
aduser.Save();
}
public void SetProperty(DirectoryEntry oDE、字符串SPPropertyName、对象SPPropertyValue)
{
if(sprPropertyValue!=null&&!string.IsNullOrWhiteSpace(sprPropertyValue.ToString())
{
if(oDE.Properties.Contains(sprPropertyName))
{
oDE.Properties[SPPropertyName].Value=SPPropertyValue;
}
其他的
{
oDE.Properties[SPPropertyName].Add(SPPropertyValue);
}
尝试
{
oDE.CommitChanges();//此处出现异常。
oDE.Close();
}
捕获(例外)
{
}
}
}
尝试在提交更改之前进行重命名,希望能有所帮助
oDE.Rename("name=$name");
oDE.CommitChanges();
对不起,我来晚了,看不到你的答案。我添加了你的代码,但它仍然抛出一个异常。。。