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

Noi*_*ich 24 .net c# directory service ldap

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

相关代码:

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

例外是:

DirectoryOperationException,"服务器无法处理目录请求.".

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

有任何想法吗?

pwD*_*Dev 60

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

验证Active Directory的用户名和密码?

但我会保存你的点击和搜索... :)只需将ContextOpations.Negotiate添加到你验证如下所示的凭据调用.

bool valid = context.ValidateCredentials(user, pass, ***ContextOptions.Negotiate***);
Run Code Online (Sandbox Code Playgroud)

  • 这应该标记为分辨率.我在一个简单的测试应用程序(实际上是一个小型WPF程序)上遇到了这个异常,它只在通过VPN连接到目标域时抛出异常.每当遇到使用VPN的身份验证问题时,都会给ContextOptions.Negotiate尝试. (6认同)
  • @Kiquenet正如Brett Veenstra所解释的那样:......".NET默认使用以下技术:LDAP + SSL,Kerberos,然后是RPC.我怀疑你的网络中的RPC已关闭(好!)而Kerberos实际上并没有被.NET,除非你使用ContextOptions明确告诉它.谈判"...... (3认同)

fre*_*edw 6

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

所以基本上检查应用程序池的用户是否在IIS上运行.