0

我有一个 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 Server 2008 我将应用程序添加到 iis 并连接网站,我收到此错误:

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

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

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

有人能帮我吗?

4

3 回答 3

1

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

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

于 2013-02-28T14:00:25.130 回答
1

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

于 2013-02-28T14:00:15.787 回答
0

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

于 2013-02-28T14:01:15.823 回答