2016-10-07 3 views
1

C#プログラムを強化したいので、グローバルカタログDCのリストのいずれかを利用できるように書いていますオフラインにする。私は(サーバがping可能であるだけでなく、かどうか)ADDSは、ターゲットサーバ上で動作しているかどうかに応じて、ブール値を返すメソッドを書きたいと思います:C#Active Directoryドメインコントローラが起動しているかどうかを確認する方法

public bool DC_is_Alive(string DomainControllerFQDN) 
{ 
... 
} 
+0

このページは役立ちます。https://msdn.microsoft.com/en-us/library/bb267453.aspx?f=255&MSPPError= -2147217396#sdsadintro_topic3 –

答えて

1

あなたは、次のいずれかの方法を使用することができます。

I.は、サーバー上でrootDSEパーティションにDirectoryEntryを作成COMExceptionはをキャッチし、エラーコード

using (var entry = new DirectoryEntry("LDAP://serverFqdn/RootDSE") 
{ 
    entry.RefreshCache() 
} 

IIをご確認ください。サーバーへのLdapConnectionの作成、Bindメソッドの呼び出し、LdapExceptionのキャッチ、エラーコードの確認

III。 DomainController.GetDomainControllerメソッドを呼び出して、私の経験からActiveDirectoryObjectNotFoundException

var dc = DomainController.GetDomainController(new DirectoryContext... 

P. S.をキャッチし、DomainController.GetDomainControllerがハングアップすることがありますので、プログラム全体が(それは1000のうちの1つのAD環境で起こる)応答を停止します。 DomainController.GetDomainControllerを非同期に呼び出し、ハングする場合にTimeoutExceptionをスローするメソッドのバージョンを作成しました。

+0

素敵です!これはまさに私が探していた答えのタイプです。どうもありがとう! –

関連する問題