将此代码部署到身份为应用程序池用户的web应用程序时,下面的代码会引发未知的COM异常。调用FindByIdentity方法时会发生异常。
System.Runtime.InteropServices.COMException:未知错误(0x8000500c)
using (PrincipalContext prinCon = new PrincipalContext(ContextType.Domain))
{
GroupPrincipal groupPrin = GroupPrincipal.FindByIdentity(prinCon, name);
}如果我将应用程序池标识更改为域用户,则此问题将得到解决。这让我开始相信这是一个许可/安全问题。然而,这个错误并不会发生在所有的服务器上,只是一些服务器。此外,重新启动将修复此问题。
那么,我的问题是为什么要重新启动服务器来修复这个问题呢?有什么办法可以让这件事不重新开始吗?
我已经做了相当多的谷歌搜索,没有遇到任何人有相同的问题,一些类似的许可问题,但没有一个帮助解决我的问题。
提前谢谢。
发布于 2015-10-16 15:44:51
更改应用程序池帐户对我是有效的。它是ApplicationPoolIdentity用户,但是在我更改为Network之后,这个错误消失了,AD代码运行良好。我希望这能帮到你。
发布于 2012-09-04 22:45:27
您没有指定标识类型,但是您要给它提供一个字符串。也许它不知道如何搜索字符串。例如,它可能假设字符串是guid,然后尝试解析它,然后失败。
试一试如下:
var groupPrin = GroupPrincipal.FindByIdentity(prinCon, IdentityType.Name , name);另外,尝试使用一些绝对具有执行这些操作(例如管理或服务帐户)权限的凭据来设置您的PrincipalContext。
https://stackoverflow.com/questions/9687113
复制相似问题