我在更新Active Directory数据库中的用户信息时遇到问题...
当我运行以下代码时,我收到此错误:
指定的目录服务属性或值不存在
问题是用于保存信息的路径是:
CN=AD Test,OU=Container Name,DC=us,DC=flg,DC=int
Ad Test
是我尝试更新的AD中的用户名。
我认为应该是:
CN=Ad Test,OU=Container Name, OU=Server Name,DC=us,DC=flg,DC=int
我是目录服务的新手,所以我非常感谢您找出我无法更新的原因...提前谢谢
public bool UpdateActiveDirectory(string LdapServerName, string CustId, Employee SQLresult)
{
try
{
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://" + LdapServerName, "usrename", "password", AuthenticationTypes.Secure);
DirectorySearcher searcher = new DirectorySearcher(rootEntry);
searcher.Filter = "(sAMAccountName=" + SQLresult.LogonNT + ")";
searcher.PropertiesToLoad.Add("title");
searcher.PropertiesToLoad.Add("street");
searcher.PropertiesToLoad.Add("1");
searcher.PropertiesToLoad.Add("st");
searcher.PropertiesToLoad.Add("postalCode");
searcher.PropertiesToLoad.Add("department");
searcher.PropertiesToLoad.Add("mail");
searcher.PropertiesToLoad.Add("manager");
searcher.PropertiesToLoad.Add("telephoneNumber");
SearchResult result = searcher.FindOne();
if (result != null)
{
// create new object from search result
DirectoryEntry entryToUpdate = result.GetDirectoryEntry();
entryToUpdate.Properties["title"].Value = SQLresult.Title;
entryToUpdate.Properties["street"].Value = SQLresult.Address;
entryToUpdate.Properties["1"].Value = SQLresult.City;
entryToUpdate.Properties["st"].Value = SQLresult.State;
entryToUpdate.Properties["postalCode"].Value = SQLresult.ZipCode;
entryToUpdate.Properties["department"].Value = SQLresult.Department;
entryToUpdate.Properties["mail"].Value = SQLresult.EMailID;
entryToUpdate.Properties["manager"].Value = SQLresult.ManagerName;
entryToUpdate.Properties["telephoneNumber"].Value = SQLresult.Phone;
entryToUpdate.CommitChanges();
Console.WriteLine("User Updated");
}
else
{
Console.WriteLine("User not found!");
}
}
catch (Exception e)
{
Console.WriteLine("Exception caught:\n\n" + e.ToString());
}
return true;
}
答案 0 :(得分:3)
也许只是一个错字?
您尝试更新的第三个属性:
entryToUpdate.Properties["1"].Value = SQLresult.City;
那里有一个(1
)?它应该是一个小L(l
)而不是。
另外:经理的名字必须是经理的专有名称 - 整个
CN=Manager,CN=Ad Test,OU=Container Name, OU=Server Name,DC=us,DC=flg,DC=int
事情 - 不只是名称本身。
如果这对任何事情没有帮助 - 只需回到老派调试技术:
- >一遍又一遍地重复,直到找到你的罪魁祸首