GroupPrincipal.FindByIdentity未知COM异常

本文关键字:异常 COM 未知 FindByIdentity GroupPrincipal | 更新日期: 2023-09-27 18:27:34

将此代码部署到标识为应用程序池用户的web应用程序时,以下代码引发未知COM异常。调用FindByIdentity方法时发生异常。

System.Runtime.InteropServices.COMException:未知错误(0x8000500c)

using (PrincipalContext prinCon = new PrincipalContext(ContextType.Domain))
{
     GroupPrincipal groupPrin = GroupPrincipal.FindByIdentity(prinCon, name);
}

如果我将应用程序池标识更改为域用户,则此问题将得到解决。这让我最初认为这是一个许可/安全问题。然而,这个错误并不是发生在所有服务器上,只是发生在某些服务器上。此外,重新启动将修复此问题。

所以,我的问题是,为什么要重新启动服务器来解决这个问题?有没有一种方法可以让我在不重新启动的情况下完成这项工作?

我在谷歌上做了大量的搜索,没有遇到任何人有同样的问题,也没有遇到一些类似的权限问题,但都没有帮助解决我的问题。

提前谢谢。

GroupPrincipal.FindByIdentity未知COM异常

更改应用程序池帐户对我有效。它是ApplicationPoolIdentity用户,但在我更改为网络服务后,这个错误消失了,AD代码工作正常。我希望这能有所帮助。

您没有指定标识类型,但随后为其提供了一个字符串。也许它不知道如何搜索字符串。例如,它可能假设字符串是一个guid,然后尝试解析它,然后失败。

试试类似的东西:

var groupPrin = GroupPrincipal.FindByIdentity(prinCon, IdentityType.Name , name);

此外,请尝试使用一些绝对有权执行这些操作的凭据(如管理员或服务帐户)来设置PrincipalContext。