2010-12-06 11 views
6

Tengo una aplicación que está fallando en la búsqueda de DNS (System.Net.Dns.GetHostEntry) bajo Windows 7. Esta aplicación funciona bien bajo XP.Error de proceso .NET Búsqueda DNS con Windows 7

El error que se genera es el código de error socket 11003:

WSANO_RECOVERY Este es un error no recuperable. Esto indica que se produjo algún tipo de error no recuperable durante una búsqueda en la base de datos. Esto puede deberse a que no se pudieron encontrar los archivos de la base de datos (por ejemplo, archivos HOSTS, SERVICES o PROTOCOLS compatibles con BSD) o el servidor devolvió una solicitud DNS con un error grave.

Lo que es particularmente interesante es que este proceso se ejecuta directamente desde un recurso compartido de red. Si lo ejecuto localmente bajo Win 7, funciona bien.

He dado a la ubicación de red plena confianza en todas las versiones de caspol (32 bit & 64bit).

¿Hay alguna otra configuración de seguridad .NET o Windows 7 que impida las búsquedas DNS por procesos que se ejecutan desde ubicaciones compartidas de red?

+1

Gracias por preguntar esto. Su pregunta me enseñó que GetHostEntry funcionará bien si ejecuto mi programa desde la máquina local en lugar de una unidad de red.:) –

Respuesta

2

Resulta que este era caspol.

Pero en Windows 7, simplemente estar en el grupo Administradores no es suficiente.

También tiene que hacer clic con el botón derecho en el acceso directo del símbolo del sistema .NET y seleccionar "Ejecutar como administrador" para omitir el UAC.

Luego, los comandos caspol normales funcionarán.

0

Si está pasando una dirección IP, vale la pena señalar que, de forma predeterminada, utiliza IPv6 y de acuerdo con la documentación, lanzará exception.

Mi sugerencia es conseguir direcciones IPv4 utilizando el código de abajo:

IPAddress ipv4 = Dns.GetHostAddresses(address).Where(x=>x.AddressFamily == AddressFamily.InterNetwork).FirstOrDefault(); 
+0

En realidad estoy usando el nombre de host, aunque el uso de la dirección IP falla con el mismo error. Una nota en ese enlace señala que DNS falla automáticamente en cualquier cosa en "Zona de Internet". Así que voy a investigar eso. –

+0

La zona de seguridad es Mi Computadora, por lo que se descarta. –

+0

¿Has probado mi código? Obtenga la dirección IPv4 como describí y luego llame a GetHostEntry pasando IPv4. Eso debería funcionar. – Aliostad

0

Ok, para probar fácilmente si su DNS está configurado correctamente es añadir una sola página HTML en el directorio raíz. Si esta página se visualiza como se espera, el dns está bien.

Todos tienen su propia manera de verificar las cosas, eso es perfecto porque podemos compartir nuestras experiencias. Me gusta poner bits de mi código/página al servidor en relación con lo que quiero lograr, bit por bit.

Espero que esto ayude ...

+0

Esta es una aplicación WPF cliente grueso, no una aplicación web. –

+0

@GusPaul, no importa si la aplicación está basada en WPF o en la Web. Él te está diciendo la forma de probar tu DNS. –

1

Tuve un problema similar al conectarme a SQL Server a través de una aplicación .Net que se ejecutaba desde un recurso compartido de red.

Con Win7/2008, debe Leer, Mostrar el contenido de la carpeta en cada carpeta desde el recurso compartido hasta la carpeta de la aplicación. Si hay una carpeta intermedia sin ningún permiso, la conexión falla.

Funciona en XP.

Cuestiones relacionadas