2010-12-06 28 views
6

Windows 7でDNSルックアップ(System.Net.Dns.GetHostEntry)に失敗しているアプリケーションがあります。このアプリケーションはXPでは正常に動作します。.NETプロセスでWindows 7でDNSルックアップに失敗する

WSANO_RECOVERY これは回復不可能なエラーである:

生成されるエラーは、ソケットエラーコード11003です。 これは、データベースルックアップ中に何らかの種類の回復不可能なエラーが発生したことを示します。これは、データベースファイル(BSD互換のHOSTS、SERVICES、またはPROTOCOLSファイルなど)が見つからないか、または重大なエラーを伴うサーバーによってDNS要求が返されたためです。

特に興味深いのは、このプロセスがネットワーク共有から直接実行されていることです。 Win 7でローカルに実行するとうまくいきます。

すべてのバージョンのcaspol(32ビット& 64ビット)でネットワークの場所を完全に信頼しています。

ネットワーク共有の場所から実行されているプロセスによるDNSルックアップを防止するその他の.NETまたはWindows 7のセキュリティ設定はありますか?

+1

ありがとうございます。ネットワークドライブの代わりにローカルマシンからプログラムを実行すると、GetHostEntryがうまく動作することをあなたの質問で教えてくれました。:) –

答えて

2

この caspolだったが判明します。

しかしWindows 7では、Administratorsグループ内にいるだけでは不十分です。

また、.NETコマンドプロンプトのショートカットを右クリックし、[管理者として実行]を選択してUACをバイパスする必要があります。

通常のカスペルコマンドが機能します。

0

IPアドレスを渡している場合、デフォルトでIPv6を使用しており、ドキュメントによればexceptionが送信されます。

私の提案は以下のコード使用してIPv4アドレスを取得することです:あなたのDNSが正しく設定されている場合は簡単にテストするために、

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

実際にはホスト名を使用していますが、IPアドレスを使用すると同じエラーが発生します。このリンクの注記は、 "インターネットゾーン"内の何かでDNSが自動的に失敗することを指摘しています。だから私はそれを調べるつもりです。 –

+0

セキュリティゾーンはマイコンピュータであるため、ルールはその通りです。 –

+0

自分のコードを試しましたか?説明したようにIPv4アドレスを取得し、IPv4を渡してGetHostEntryを呼び出します。それはうまくいくはずです。 – Aliostad

0

[OK]をルートディレクトリに単一のHTMLページを追加することです。このページがレンダリングされると、dnsは正常です。

誰もが独自の方法でチェックアウトしています。私たちの経験を共有することができますので、完璧です。私は一度に1ビットを達成したいものに関連して、自分のコード/ページのビットをサーバーに入れたい。このことができます

希望...

+0

これは、厚いクライアントのWPFアプリケーションではなく、Webアプリケーションです。 –

+0

@GusPaulの場合、アプリがWPFかWebベースかは関係ありません。彼はあなたのDNSをテストする方法を教えています。 –

1

同様の問題がネットワーク共有から実行している.Netアプリケーション経由でSQL Serverに接続していた。

Win7/2008では、共有フォルダからアプリケーションフォルダまでの各フォルダのフォルダ内容を読み込み、一覧表示する必要があります。パーミッションのない中間フォルダがある場合、接続は失敗します。

XPで動作します。

関連する問題