.Net的目录服务引发了一个奇怪的例外

我有一个小的C#解决方案用于检查用户凭据。 它适用于我的两个队友,但在我的电脑上我得到了一个例外。

相关代码:

PrincipalContext context = new PrincipalContext(ContextType.Domain); if (context.ValidateCredentials(System.Environment.UserDomainName + "\\" + usr, pwd)) return true; else return false; 

例外是:

DirectoryOperationException,“服务器无法处理目录请求。”。

我尝试使用显式服务器名称和636端口号创建上下文,但这也没有帮助。

有任何想法吗?

我有这个问题:我的开发机器上的东西正在工作但是在服务器上没有工作。 原来,服务器上的IIS设置为以LocalMachine运行。 我将其更改为NetworkService(默认值),并开始工作。

因此,基本上检查应用程序池的用户是否在IIS上运行。

我也使用IIS Express和VS 2010解决了这个问题。为我修复的是对另一个线程的评论。

validationActive Directory的用户名和密码?

但我会保存你的点击和搜索… :)只需添加ContextOpations.Negotiatevalidation如下所示的凭据调用。

 bool valid = context.ValidateCredentials(user, pass, ***ContextOptions.Negotiate***); 

我不得不创建一个新的应用程序池并将其分配给.NET 2.0,然后将新的应用程序池分配给我们的Web应用程序,它开始工作。 我们有.NET 3.5 SP2,所以这个修补程序对我们来说并不理想。 由于WWW服务通常是Local System,我也对此提出质疑。 但由于它与.NET和安全相关,我先在应用程序池中进行了一次尝试,然后才有效。

也许你需要这个修补程序?

  • FIX:DirectoryOperationExceptionexception

您是管理员或您的服务运行的ID是PC上的管理员吗?

我认为你已经调查了这个:

  • System.DirectoryServices.Protocols

“你可能会收到一个不太有用的DirectoryOperationException(”服务器无法处理目录请求。“)对此不太有趣的是它甚至没有尝试与服务器通信。解决方案是添加端口因此,我没有通过“Server”来打开LdapConnection,而是通过“server:636”。顺便说一句,LDAPS是端口636 – 而不是LDAP使用的389端口。“


好的,我不希望Win7 / .NET 3.5需要那个补丁。 如何在这个问题中提供的信息:

  • 通过AD 2008 R2中的System.DirectoryServices.Protocols设置用户密码