この記事は、.NET クライアントを使用して HTTP プロキシ サーバー経由で Web サービスを使用するときに、エラー (基になる接続が閉じられました: リモート名を解決できませんでした) が発生する問題を解決するのに役立ちます。
元の製品バージョン: .NET Framework
元の KB 番号: 318140
症状
.NET クライアントを使用して HTTP プロキシ サーバー経由で Web サービスを使用すると、次のエラー メッセージが表示されることがあります。
基になる接続が閉じられました:リモート名を解決できませんでした。
原因
Web サービスと .NET クライアントの間に HTTP プロキシ サーバーが存在し、適切なプロキシ設定が構成されていません。
解決策
この問題を解決するには、.NET クライアントに適切なプロキシ構成設定を指定します。
Machine.config ファイルの既定の設定を次に示します。
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "true"
/>
</defaultProxy>
</system.net>
</configuration>
既定の設定でプロキシ サーバーの設定が自動的に検出されない場合は、 usessystemdefault
を false に設定し、プロキシ サーバーを明示的に指定します。 プロキシ サーバーを明示的に指定するには、 Machine.config または Web.config ファイルを使用するか、プログラムでサーバーを指定します。
プロキシ サーバーを指定するには、次のように Machine.config または Web.config ファイル設定を設定します。
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "false"
proxyaddress="http://proxyserver"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
</configuration>
WebProxy
オブジェクトを使用してプログラムで設定を変更するには、次のサンプル コードを使用します。
using System.Net;
com.someserver.somewebservice.someclass MyWebServiceClass = new com.someserver.somewebservice.someclass ();
IWebProxy proxyObject = new WebProxy ("http://myproxyserver:80", true);
MyWebServiceClass.Proxy = proxyObject;
MyWebServiceClass.MyWebMethod ();
NTLM 認証を必要とするプロキシ サーバー
プロキシ サーバーの Windows NT LAN Manager (NTLM) 認証を設定するには、次のサンプル コードを使用します。
using System.Net;
WebProxy myProxy = new WebProxy ("http://proxyserver:port", true);
myProxy.Credentials = CredentialCache.DefaultCredentials;
FindServiceSoap myFindService = new FindServiceSoap ();
myFindService.Proxy = myProxy;
システム全体のプロキシを既定として使用することもできます。 これを行うには、構成ファイルで次の設定を使用します。
<configuration>
<system.net>
<defaultProxy>
<proxy
proxyaddress = "http://proxyserver:80"
bypassonlocal = "true"
/>
</defaultProxy>
</system.net>
</configuration>