2010-12-06 2 views
6

J'ai une application qui échoue DNS recherche (System.Net.Dns.GetHostEntry) sous Windows 7. Cette application fonctionne très bien sous XP.. Processus .NET à l'échec de la recherche DNS avec Windows 7

L'erreur est généré le code d'erreur de socket 11003:

11003 WSANO_RECOVERY
Ceci est une erreur irrécupérable. Ceci indique qu'une sorte d'erreur irrécupérable s'est produite lors d'une recherche de base de données. Cela peut être dû au fait que les fichiers de base de données (par exemple, fichiers HOSTS, SERVICES ou PROTOCOLS compatibles BSD) n'ont pas pu être trouvés ou qu'une requête DNS a été renvoyée par le serveur avec une erreur grave.

Ce qui est particulièrement intéressant, c'est que ce processus s'exécute directement à partir d'un partage réseau. Si je l'exécute localement sous Win 7, ça fonctionne bien.

J'ai donné l'emplacement de réseau confiance totale sous toutes les versions de caspol (32 bits & 64bit). Y at-il un autre paramètre de sécurité .NET ou Windows 7 qui empêche les recherches DNS par des processus s'exécutant à partir d'emplacements partagés en réseau?

+1

Merci d'avoir posé cette question. Votre question m'a appris que GetHostEntry fonctionnera correctement si j'exécute mon programme depuis la machine locale au lieu d'un lecteur réseau.:) –

Répondre

2

Active cette était caspol. Mais sur Windows 7, le simple fait d'appartenir au groupe Administrateurs ne suffit pas sur Windows 7.

Vous devez également cliquer avec le bouton droit sur le raccourci .NET Command Prompt et choisir "Exécuter en tant qu'administrateur" pour ignorer le contrôle de compte d'utilisateur.

Ensuite, les commandes normales de caspol fonctionneront.

0

Si vous transmettez une adresse IP, il est à noter que par défaut, il utilise IPv6 et selon la documentation, il lancera exception.

Ma suggestion est d'obtenir l'adresse IPv4 en utilisant le code ci-dessous: pour tester facilement

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

J'utilise actuellement le nom d'hôte, bien que l'utilisation de l'adresse IP échoue avec la même erreur. Une note sur ce lien indique que DNS échoue automatiquement sur tout ce qui se trouve dans "Zone Internet". Je vais donc enquêter là-dessus. –

+0

Zone de sécurité est mon ordinateur de sorte que les règles qui sortent. –

+0

Avez-vous essayé mon code? Obtenez l'adresse IPv4 comme je l'ai décrit, puis appelez GetHostEntry en passant IPv4. Cela devrait fonctionner. – Aliostad

0

Ok, si votre dns est correctement configuré est d'ajouter une seule page HTML dans le répertoire racine. Si cette page s'affiche comme prévu, le DNS est correct.

Tout le monde a sa propre façon de vérifier, c'est parfait parce que nous pouvons partager nos expériences. J'aime mettre des morceaux de mon code/page au serveur concernant ce que je veux accomplir un peu à la fois.

Hope this helps ...

+0

Ceci est une application WPF client lourd et non une application web. –

+0

@GusPaul, peu importe si l'application est basée sur WPF ou Web. Il vous dit le moyen de tester votre DNS. –

1

Problème similaire lors de la connexion à SQL Server via une application .Net exécutée à partir d'un partage réseau. Avec Win7/2008, vous devez lire, lister le contenu du dossier dans chaque dossier du partage vers le dossier de l'application. S'il existe un dossier intermédiaire sans autorisations, la connexion échoue.

Fonctionne sur XP.

Questions connexes