2009-09-11 107 views
7

私は、.NET Webサービスを呼び出す.NETクライアントアプリケーションを取得しています。このWebサービスは、たとえば、「www.foo.com」などのサードパーティWebサービスを呼び出します。例外の原因 "System.Net.WebException:リモート名を解決できませんでした"

.NET Client -> 'My Web Service' -> 'Third Party Web Service' 

のVisual Studio 2008からは、このすべてはつまり、私は成功した「サードパーティのWebサービス」を呼び出すlocalhost:someportで「私のWebサービス」を実行している、正常に動作します。

その後、Windows 2003 Serverボックスに「My Web Service」を公開しました。 「マイWebサービス」が「サードパーティのWebサービス」を呼び出すと、
「System.Net.WebException:リモート名を解決できませんでした: 'www.foo.com'」という例外が発生しました。私は次のことを試してみた

:私は「私のWebサービス」を展開し、サーバー上で

  1. 、私は、Internet Explorerを開いて、Webサービスのアドレス「http://www.foo.com/somewebservice.asmx」を入力します。 利用可能なWebサービスメソッドのリストが表示されたため、これは成功しました。

  2. 「My Web Service」のweb.configファイルで、「サードパーティWebサービス」のURL をWebサイトの名前からそのIPアドレスに変更しました。 これは、 "System.Net.Sockets.SocketException:ソケット操作が 到達不能ネットワークに接続しようとしました"という例外で失敗しました。

  3. 次に、「サードパーティWebサービス」を呼び出すだけの簡単なWindowsフォームテストハーネスを作成しました。 このテストハーネスをサーバー上で実行したところ、「サードパーティWebサービス」 が正常に呼び出されました。

  4. 次に、上記1,2,3と同じ動作をした別のサードパーティWebサービスを試しました。

  5. 最後に、IPアドレスをサーバーの「hosts」ファイルに追加しましたが、今回ははるかに高速ですが、「リモート名を解決できませんでした」というエラーが発生しました。 DNSの問題だった場合は、テスト1と3が動作するとは思わないでしょう。

この問題を解決するにはどうすればよいですか?それは最終的には、プロキシサーバーの問題だった

:自分の質問へのMarkさんのコメントから

+0

これは、ほとんどの場合、サーバー上のIISのWebサイト/サービスに関連付けられているセキュリティ設定が原因です。これらの設定では、他のサーバーを呼び出すことができません。これをServerFaultでも投稿してみてください。 – BBlake

+0

ISA Serverまたはいくつかのファイアウォールまたはプロキシがありますか? – rahul

+2

最後にプロキシサーバーの問題でした。例外メッセージは赤いニシンだった。 私はプロキシサーバーのIPアドレスとポートを使用してWebProxyのインスタンスを作成しました。 WebProxy proxy = new WebProxy(proxyServerIPAddress、Convert.ToInt32(proxyServerPort)); myService.Proxy = proxy; –

答えて

7

。例外メッセージは赤いニシンだった。それを修正するために私たちのプロキシサーバーのIPアドレスとポートを使用してWebProxyのインスタンスを作成:

WebProxy proxy = new WebProxy(proxyServerIPAddress, Convert.ToInt32(proxyServerPort));  
myService.Proxy = proxy; 
0

私は一応これで私自身の最近の経験についての結論だとして、これは、DNSの問題をも示すことができると思います例外。私の(最近の)経験では、例外がスローされなくなりました(そして、私のアプリでログに記録されました)。

5
<system.net> 
     <defaultProxy> 
      <proxy 
       usesystemdefault = "false" 
     /> 
     </defaultProxy> 
    </system.net> 

0

を設定プロキシをキャンセル我々は問題のサーバー上で実行されている2つのアプリケーションでいくつかの問題を抱えていました。このエラーは、スケジュールに従ってSQLジョブエージェントで実行される場合にのみ発生し、問題を特定するのは非常に困難でした。ネットワークの人々がISAファイアウォールからForefrontファイアウォールに移行する際に問題が発生していることが判明しました。 app.configの "usesystemdefault"を使用するIamtonyzhouのソリューションは、ネットワークファイアウォールの問題が解決されるまで回避策としてうまく機能しました。ファイアウォールの設定が常に変更される可能性があるため、私はWebProxyオブジェクトをインスタンス化するとは思わない。

関連する問題