Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在身份转换之前检测丢失的域控制器?_.net_Windows_Identity - Fatal编程技术网

.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似乎就足够了。这不是一个通用的系统异常,所以我可以简单地告诉它忽略这些异常的第一次机会。