Как обнаружить пропавший контроллер домена перед переводом личности? - PullRequest
1 голос
/ 04 ноября 2010

В нашей кодовой базе у нас есть кусок кода, который принимает некоторые решения на основе членства текущего пользователя.Значительно упрощенно это выглядит так:

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 Ответ

1 голос
/ 25 января 2011

Я бы выполнил поиск домена, который гарантированно будет успешным, пока вы подключены, например, поиск домена самостоятельно с помощью directorysearcher. Если вы вошли в домен и подключились к DC, это было бы успешно, и вы можете предположить, что последующие сбои поиска вызваны чем-то другим, кроме проблем с соединением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...