我使用控制台应用程序编写一些测试代码:
/// <summary>
/// Returns AD information for a specified userID.
/// </summary>
/// <param name="ntID"></param>
/// <returns></returns>
public ADUser GetUser(string ntID)
{
DirectorySearcher search = new DirectorySearcher();
search.Filter = String.Format("(cn={0})", ntID);
search.PropertiesToLoad.Add("mail");
search.PropertiesToLoad.Add("givenName");
search.PropertiesToLoad.Add("sn");
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("userPrincipalName");
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
return new ADUser(result);
}
并且这在控制台应用程序中很好地工作。然而,当我将它移动到一个ASP.NET应用程序时,我收到了一个关于不知道正确域的错误消息。
当在ASPNET帐户上运行时,我是否遗漏了访问AD的技巧?
编辑:仅传递LDAP://域连接字符串是不够的,因为它需要实际的登录/密码。由于这在机器上运行的是本地帐户,我不确定要使用哪个AD L / P。我能否以某种方式委派访问用户的帐户?
编辑 #2: 尝试使用身份模拟时,会出现DirectoryServicesCOMException: