我正在使用System.DirectoryServices.AccountManagement
查找登录用户的AD条目。它在开发人员机器上的VS2008 WebDev服务器上运行良好。
但是当我们在开发服务器(Windows Server 2008)上安装代码时,我们会收到访问错误。
开发人员的计算机和开发服务器都是同一个域的成员。
我们已启用模拟功能,因此我们使用相同的用户凭据连接到AD。
我们在这里缺少什么?为什么它在开发人员的机器上工作,而不是在开发服务器上工作?
我们收到的实际异常是“发生了操作错误”。
答案 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!
如此好的称呼这是关于服务器上的委派,你的解决方案非常完美,非常感谢!