.net 如何在身份转换之前检测丢失的域控制器?
在我们的代码库中,我们有一段代码,它根据当前用户的成员身份做出一些决策。大大简化了它看起来是这样的:.net 如何在身份转换之前检测丢失的域控制器?,.net,windows,identity,.net,Windows,Identity,在我们的代码库中,我们有一段代码,它根据当前用户的成员身份做出一些决策。大大简化了它看起来是这样的: foreach (var group in WindowsIdentity.GetCurrent().Groups) { try { string groupName = group.Translate(typeof(NTAccount)).Value; if (groupName.StartsWith(..blahblahblah...)) {
foreach (var group in WindowsIdentity.GetCurrent().Groups)
{
try
{
string groupName = group.Translate(typeof(NTAccount)).Value;
if (groupName.StartsWith(..blahblahblah...)) { dosomething(); }
}
catch (IdentityNotMappedException) { }
}
不幸的是,我在局域网外的笔记本电脑上,它无法处理脱机情况。Translate()
调用失败,出现系统异常“此工作站与主域之间的信任关系失败”
出于明显的原因,我不想屏蔽SystemException
,而且我绝对不想禁用在调试器中捕获这些异常的首次机会
由于无法访问域控制器,测试Translate()失败的正确方法是什么?我不想掩盖特定的“trust relationship failed”(信任关系失败)错误,只要避免尝试翻译(如果由于网络条件而保证会失败)。我将执行一个域查找,只要您已连接,就可以成功,例如使用directorysearcher搜索它自己的域。如果您登录到域并连接到DC,这将是成功的,并且您可以假设后续查找失败是由连接问题以外的其他原因造成的 我将执行一个域查找,只要您已连接,该查找就会成功,例如,使用directorysearcher搜索它自己的域。如果您登录到域并连接到DC,这将是成功的,并且您可以假设后续查找失败是由连接问题以外的其他原因造成的 是的,我最后做了这样的事。只要简单地“使用(新PrincipalContext(ContextType.Domain)){}”并捕获PrincipalServerDownException似乎就足够了。这不是一个通用的系统异常,所以我可以简单地告诉它忽略第一次机会。是的,我最终做了类似的事情。只要简单地“使用(新PrincipalContext(ContextType.Domain)){}”并捕获PrincipalServerDownException似乎就足够了。这不是一个通用的系统异常,所以我可以简单地告诉它忽略这些异常的第一次机会。