System.DirectoryServices.AccountManagement无法在服务器上运行

时间:2010-03-17 15:18:19

标签: asp.net-mvc active-directory windows-server-2008

我正在使用System.DirectoryServices.AccountManagement查找登录用户的AD条目。它在开发人员机器上的VS2008 WebDev服务器上运行良好。

但是当我们在开发服务器(Windows Server 2008)上安装代码时,我们会收到访问错误。

开发人员的计算机和开发服务器都是同一个域的成员。

我们已启用模拟功能,因此我们使用相同的用户凭据连接到AD。

我们在这里缺少什么?为什么它在开发人员的机器上工作,而不是在开发服务器上工作?

我们收到的实际异常是“发生了操作错误”。

2 个答案:

答案 0 :(得分:2)

经过一些研究,我找到了以下链接:http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/c314650a-ff5e-49e6-8f53-9a7cca17e806

其中一位用户描述了问题的解决方案:

  

我看到了这个错误,这与以下事实有关:当在web.config中使用NTLM身份验证和模拟设置为true时,IIS无法对另一台服务器使用经过身份验证的令牌,因为它是“辅助令牌”。

我的问题的解决方案是将我的Active Directory代码包装在:

 using( HostingEnvironment.Impersonate() )
 {
    //Active Directory search goes here.
 }

这使得对AD的调用具有应用程序池的标识,并且它在我的情况下完成了。

答案 1 :(得分:0)

我只是在四处寻找修复错误System.DirectoryServices.DirectoryServicesCOMException

使用UserPrincipal.FindByIdentity

之后

并且mlsteeves的回答是我需要的,模仿生产服务器上的hostenvironnement!

如此好的称呼这是关于服务器上的委派,你的解决方案非常完美,非常感谢!