我有一个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。
有人可以帮助我吗?
答案 0 :(得分:1)
您的“用户名”变量为空,导致您的过滤器以等号终止(实际上是无效的)在不了解您的设置的情况下,很难说。但这听起来很明显,就像你没有为新服务器上的网站正确设置身份验证 - 导致你必须填写用户名的任何例程都没有得到任何回报。
答案 1 :(得分:1)
错误显然是因为“username”是一个空字符串。这很可能是因为您的用户正在匿名登录您的网站。请确保在IIS中禁用匿名访问。
但是,如果您可以显示调用GetUserProfileFromAD
。
答案 2 :(得分:0)
在我看来,变量用户名没有被填充,如果你说你把它移到IIS尝试再次检查安全选项,可能还没有配置Windows身份验证。