1

デスクトップのコンソール アプリケーションから Dns.GetHostEntry("SomeServerName") を呼び出すと、IP アドレスが問題なく解決されます。デスクトップでも実行されている ASP.NET アプリケーションで同じコードを実行すると、「不明なホスト」というメッセージとともに SocketException が発生します。

IIS / ASP.NET のインストールに問題があるように感じますが、今は再インストールを試みる時間がありません。

テストとして、machine.config 内の ASP.NET アカウントの ID を変更して、独自のネットワーク資格情報を使用しましたが、違いはありませんでした。

何か案は?

アップデート:

明確にする必要があるようです。ワークステーションで ASP.NET からのネットワーク通信に問題があります。これには、SmtpClient を使用して電子メールを送信しようとしたり、ODBC 接続を介して IBM DB2 に接続しようとしたりすることも含まれます。これらはすべて、コンソール アプリケーションで実行すると正常に機能します。根本的な原因は、コードが ASP.NET で実行されている場合、DNS 解決が失敗することのようですが、理由はわかりません。私が考えることができる唯一の違いは、セキュリティ コンテキストです。

更新 2:

Wireshark を実行した結果の一部を以下に示します。コンソール アプリケーションから呼び出しを行うと、すぐに 2 つの「標準ドメイン ネーム システム クエリ」がネットワーク経由で送信されていることがわかります。同じ呼び出しが ASP.NET アプリケーションから行われると、約 8 秒の遅延の後、3 つの「NetBIOS ネーム サービス クエリ」がネットワーク経由で送信されます。何か案は?

4

2 に答える 2

1

問題の解決 : 私のワークステーションのウイルス対策プログラムは、IIS からの送信接続を明示的にブロックしていました。表向きは、ワームがネットワーク上に広がるのを阻止するためです。

于 2012-06-13T13:56:04.753 に答える
0

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/2a8ca3c8-e1ec-490a-a7e5-5ec533080f00/

IP アドレス リテラルを GetHostEntry に渡すと、IP アドレスを返すだけでなく、DNS 逆引き解決が試行されます。正常な逆引き解決のデータが DNS サーバーにない場合、これは失敗します。このセマンティックが必要ない (つまり、逆引きがない) 場合は、Dns.GetHostAddresses を使用します。

于 2012-05-31T16:12:33.667 に答える