-1

我的任务是将一些 c# v4 应用程序从一台服务器迁移到另一台服务器,并且我遇到了一个 aspx 表单的问题。

该表单调用了一个类以在其代码隐藏文件中搜索 AD 用户。它调用的方法如下。

    public UserPrincipal GetADUser(string samAccountName)
        {
        try
        {
            UserPrincipal user = UserPrincipal.FindByIdentity(AD.domainContext, samAccountName);
            return user;
        }
        catch(Exception ex)
        {
            throw new Exception(" Cant perform this operation:-"+ex.Message);
        }
    }

AD.domainContext 定义如下

private static PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, ConfigurationHandler._ADDomain);

我的问题是该方法适用于我的两台服务器(VS Dev 和当前运行我从中迁移的代码的服务器),并在我试图迁移到的服务器上引发异常。所有服务器都是相同的环境 Windows Server 2k8 R2 运行 iis 7.5

被抛出的错误是

无法执行此操作:- 发生操作错误。

我进行了搜索并发现了以下 stackoverflow 问题,但似乎没有一个可以解决该问题

WCF 服务中的 System.DirectoryServices.AccountManagement.PrincipalContext 和模拟

Active Directory COM 异常 - 发生操作错误 (0x80072020)

有谁知道是什么导致这个错误在一个环境而不是其他环境中引发?

我试图调试代码,它在 VS 调试中运行良好,但是当代码部署到所述服务器时,我遇到了问题。

任何帮助、想法、想法将不胜感激。

如果我忘记包含任何内容,我很乐意详细说明所提供的任何信息。

提前致谢

尼古拉斯

4

1 回答 1

1

对于面临类似问题的任何其他人,解决方案似乎是需要提供用户名和密码来查询 AD,除非您在 IIS 中打开了用户假冒。

只需用以下方法修改我的方法即可解决问题

private static PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, null,ConfigurationHandler._ADDomain, ConfigurationHandler._ADUser, ConfigurationHandler._ADPassword);

谢谢

尼古拉斯

于 2012-06-28T16:05:04.040 回答