如何在身份转换之前检测丢失的域控制器?

时间:2010-11-03 22:50:46

标签: .net windows identity

在我们的代码库中,我们有一大块代码可以根据当前用户的成员资格做出一些决策。大大简化它看起来像这样:

foreach (var group in WindowsIdentity.GetCurrent().Groups)
{
    try
    {
        string groupName = group.Translate(typeof(NTAccount)).Value;
        if (groupName.StartsWith(..blahblahblah...)) { dosomething(); }
    }
    catch (IdentityNotMappedException) { }
}

不幸的是,我在局域网外的笔记本电脑上,并没有处理离线情况。 Translate()调用因SystemException 而失败“此工作站与主域之间的信任关系失败。”

出于显而易见的原因,我不想屏蔽SystemException,我绝对不想在调试器中禁用第一次机会。

由于域控制器无法访问,测试Translate()失败的正确方法是什么?我不想掩盖特定的“信任关系失败”错误,如果由于网络条件而保证失败,则避免尝试转换。

1 个答案:

答案 0 :(得分:1)

我会执行一个域名查找,只要你连接就可以获得成功,例如用directorysearcher搜索自己的域名。如果您已登录到域并连接到DC,则此操作将成功,并且您可以假设后续查找失败是由连接问题以外的其他问题引起的。