我正在" domain1"中的IIS 7上运行WCF(.NET 3.5)服务。该服务在受信任域"域2"的域用户帐户下运行。该服务在与计算机(虚拟机)不同的计算机(虚拟机)上运行,其中" domain1"域控制器正在运行。该服务在生产中正常工作,然后突然出现以下异常
消息:未知错误(0x8000500c)System.ServiceModel.FaultException`1 [System.ServiceModel.ExceptionDetail]:未知错误(0x8000500c)(故障详细信息等于ExceptionDetail,可能由IncludeExceptionDetailInFaults = true创建,其值为: System.Runtime.InteropServices.COMException:未知错误(0x8000500c)
以下代码抛出了上述错误:
private bool IsActiveDirectoryUser(string userName)
{
bool isActive = false;
string[] userNameInfo = userName.Split(new char[] { '\\' });
if (userNameInfo != null && userNameInfo.Length == 2)
{
string domainName = userNameInfo[0];
string winName = userNameInfo[1];
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domainName);
PrincipalSearcher principalSearcher = null;
{
UserPrincipal userPrincipal = new UserPrincipal(principalContext);
userPrincipal.SamAccountName = winName;
principalSearcher = new PrincipalSearcher(userPrincipal);
Principal principalUser = principalSearcher.FindOne();
if (principalUser != null)
{
UserPrincipal validUser = ((UserPrincipal)principalUser);
if ((validUser.Enabled != null && validUser.Enabled.Value) && !validUser.IsAccountLockedOut())
isActive = true;
}
}
}
return isActive;
}
重新启动服务后,异常消失了。我试图在开发环境中重现错误但是徒劳无功。
在线资源提示了两种可能产生0x8000500c
错误的方案:
访问自定义活动目录属性。我不能使用这个
AD兑现问题。如果这是问题,为什么例外 重启服务后不见了。人们会期望缓存 机器重启后没有重新启动过程清除。
有关如何重现错误的任何想法? 谢谢!