Rychlý tip - C # Jak DNS úplný název vaší domény služby Active Directory ...

Andy Grogan 3. srpna, 2010 · 0 komentářů

v Exchange programování NET. , Microsoft Visual Studio , rychlých tipů , Windows 2003 - ADSI , Windows 2008 - ADSI

Lehce mimo téma tohoto jednoho, ale ve stejném duchu jako můj post zde (asi dostat své jméno organizace Exchange pomocí C #'') - to bylo něco, co mě přivádí k šílenství.

V podstatě jsem přepisování (za to, co se zdá být navždy) můj Exchange 2007 segregace nástroj v C # pomocí aplikace Visual Studio. Jednou z nových funkcí nástroje je dynamicky zjistit úplný název domény služby Active Directory, které Exchange Server je členem.

Tak například - pokud máte doménu s názvem Justice.com - tato hodnota bude vráceno do textového pole v mé aplikaci.

V počáteční sestavení softwaru jsem používal následující kód, který jsem našel na internetu pomocí Google:

  IPHostEntry on = Dns.GetHostEntry (Životní prostředí UserDomainName.);
 tboxDNSDomain.Text = he.HostName.ToString (); 

Nicméně, během testování (sic. funkce, která zjistila doménu DNS) jsem zjistil, že výše uvedený kód bude fungovat v pohodě, když byla celková aplikace běží na Windows 2008 Server - ale při testování stejný kód proti Windows 2003 box I by dojít k následující chybě:

DNS.GetHostEntry = Žádný takový hostitel je známo - viz snímek obrazovky níže dialogu NET Výjimka:.

GetHostEntry

Po dlouhém testování a, upřímně řečeno, nakládání horniny kolem jsem došel k závěru (což by mohlo být opodstatněné), že tam je něco jiného, ​​o systému Windows 2008 NET API, aby, že jsou v systému Windows 2003 -., Který způsobuje tento problém se stane.
Addtionally z mého výzkumu v online fórech se zdá, že nejsem jediný člověk, kterého se zdá, že narazíte na tento problém.

Takže namísto toho, aby ztrácet čas, rozhodl jsem se zjistit, jestli bych mohl najít jiný způsob, jak vyřešit problém - na které jsem přišel s následujícím kódem:

  pomocí System.Net.NetworkInformation;

 .GetIPGlobalProperties(); . IPGlobalProperties vlastnosti = IPGlobalProperties GetIPGlobalProperties ();
 tboxDNSDomain.Text = properties.DomainName;

Testování výše uvedený kód na obou platformách Windows přinesla úspěch, a tak; pokud jste kódování v C # a chcete vyřešit jen FQDN domény Active Directory (nebo více na bod FQDN domény, které stroj, který jste vykonávání kódu na) - výše uvedené se zdá poskytovat velmi spolehlivé výsledky .

comments… add one now } {0 komentářů ... přidat jednu nyní }

Zanechat komentář

CAPTCHA Image
Obnovit obrázek
*

Předchozí příspěvek:

Následující příspěvek: