从ASP.NET搜索Active Directory

时间:2013-02-28 13:57:10

标签: asp.net .net exception search iis

我有一个asp.net网站,使用以下代码在Active Directory中搜索用户详细信息:

public static SearchResult GetUserProfileFromAD(string username)
{
    DirectorySearcher searcher = new DirectorySearcher("(&(objectCategory=person)(sAMAccountName=" + username + "))");
    return searcher.FindOne();
}

该网站在Windows Server 2003和IIS5上运行良好。 最近我将网站移动到带有IIS7.5的新Windows服务器2008 我添加了应用程序到iis和conect网站,我收到此错误:

  

(&(objectCategory=person)(sAMAccountName=))搜索过滤器是   无效。描述:期间发生了未处理的异常   执行当前的Web请求。请查看堆栈跟踪   有关错误及其来源的更多信息   代码。

     

异常详细信息:System.ArgumentException:The   (&(objectCategory = person)(sAMAccountName =))搜索过滤器无效。

当我通过Visual Studio运行我的网站时,它可以工作。问题仅来自IIS。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您的“用户名”变量为空,导致您的过滤器以等号终止(实际上是无效的)在不了解您的设置的情况下,很难说。但这听起来很明显,就像你没有为新服务器上的网站正确设置身份验证 - 导致你必须填写用户名的任何例程都没有得到任何回报。

答案 1 :(得分:1)

错误显然是因为“username”是一个空字符串。这很可能是因为您的用户正在匿名登录您的网站。请确保在IIS中禁用匿名访问。

但是,如果您可以显示调用GetUserProfileFromAD

的代码,将会很有帮助

答案 2 :(得分:0)

在我看来,变量用户名没有被填充,如果你说你把它移到IIS尝试再次检查安全选项,可能还没有配置Windows身份验证。