在我们的代码库中,我们有一大块代码可以根据当前用户的成员资格做出一些决策。大大简化它看起来像这样:
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()失败的正确方法是什么?我不想掩盖特定的“信任关系失败”错误,如果由于网络条件而保证失败,则避免尝试转换。
答案 0 :(得分:1)
我会执行一个域名查找,只要你连接就可以获得成功,例如用directorysearcher搜索自己的域名。如果您已登录到域并连接到DC,则此操作将成功,并且您可以假设后续查找失败是由连接问题以外的其他问题引起的。