2010-05-13 21 views
2

我需要通过检查指定域中是否存在这样的用户名来验证LDAP用户。对于此我使用此代码 -Active Directory登录 - DirectoryEntry不一致的异常

DirectoryEntry entry = new DirectoryEntry("LDAP://" + strDomainController); 
DirectorySearcher searcher = new DirectorySearcher(entry); 
searcher.Filter = "SAMAccountName=" + strUserName; 
SearchResult result = searcher.FindOne(); 
return (result != null) ? true : false; 

这是一个类库,我intened引用和使用无论我需要在我的项目此功能的方法。

为了测试这个,我创建了一个简单的测试应用程序。测试发生这样的 -

Console.WriteLine(MyClassLib.MyValidateUserMethod("UserName", "Domain",ref strError).ToString()); 

我现在面临的问题是,这工作得很好,当我和我的testapp,但在我的项目进行测试,当我尝试用同样的方法用相同的凭据 - 在DirectoryEntry对象抛出"System.DirectoryServices.DirectoryServicesCOMException"异常,并且search.Filter失败并抛出ex = {“登录失败:未知用户名或错误密码。\ r \ n”}异常。

我试过模拟,但没有帮助。不知怎的,同样的方法在mytestapp中工作正常,并且在我的项目中不起作用。这两个应用程序都在我的本地开发机器中。我错过了什么?有任何想法吗?

回答

1

我尝试了几乎所有可能的解决方案,我可以在每个这样的线程上找到,但我仍然无法解决它。

我试图重做整个事情,然后它的工作。我认为,负责它与我的测试应用程序而不是我的项目一起工作的原因是,我的项目存储在网络位置,我的测试应用程序存储在我的PC的硬盘驱动器中。

当我将我的项目复制到我的电脑硬盘上时,它开始正常工作。我最好的猜测是,由于项目位于网络上,可能没有足够的权限授予LDAP验证。

+0

你使用模拟,还是当前的Windows用户? – 2010-05-21 14:57:53

+0

我正在使用模拟。 – pavanred 2010-05-21 18:33:40

0

您确定您的测试应用程序和您的真实应用程序是以同一用户身份运行的,因此它们在AD中具有相同的权限?虽然DirectoryEntry对象引发的异常很难排除故障,但这是我要检查的第一件事。它是一个什么样的项目 - 网络应用程序或桌面应用程序?如果它是一个Web应用程序,那么运行应用程序池的用户可能没有必要的权限。

+0

我在我的测试和我的项目中都使用了相同的用户。该项目是一个Web应用程序。 用户拥有什么权限,如果同一个应用在同一个应用中工作,那么它应该在另一个应用中?打我.. – pavanred 2010-05-13 07:22:04