2010-05-25 10 views
10

¿Cómo obtengo mi servidor DNS actual en C#?¿Cómo obtengo mi servidor DNS actual en C#?

+2

¿Se refiere al servidor DNS de la máquina local, a los servidores DNS de su dominio u otra cosa? Hay muchas respuestas diferentes a lo que es "su servidor DNS", IMO. –

+0

Estoy pensando en convertir mi código inseguro que realiza la búsqueda de Mx Record en una versión segura. Ver: http://stackoverflow.com/questions/2906615/how-to-get-around-dnsrecordlistfree-error-in-net-framework-4-0 –

+0

Lo que me gustaría saber es cómo actuar Consultas DNS sin tener que especificar el nombre del servidor DNS, es decir, que el sistema use el predeterminado. Esto es lo que sucede cada vez que escribe una URL en alguna parte, por lo que no está seguro de por qué las clases de DNS no pueden permitir un valor predeterminado. –

Respuesta

0

Hace poco intenté hacer lo mismo y encontré esto excellent example de Robert Sindal.

using System; 
using System.Net; 
using System.Net.NetworkInformation; 

namespace HowToGetLocalDnsServerAddressConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine(GetDnsAdress()); 
      Console.ReadKey(); 
     } 

     private static IPAddress GetDnsAdress() 
     { 
      NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces(); 

      foreach (NetworkInterface networkInterface in networkInterfaces) 
      { 
       if (networkInterface.OperationalStatus == OperationalStatus.Up) 
       { 
        IPInterfaceProperties ipProperties = networkInterface.GetIPProperties(); 
        IPAddressCollection dnsAddresses = ipProperties.DnsAddresses; 

        foreach (IPAddress dnsAdress in dnsAddresses) 
        { 
         return dnsAdress; 
        } 
       } 
      } 

      throw new InvalidOperationException("Unable to find DNS Address"); 
     } 
    } 
} 
Cuestiones relacionadas