이 문서는 .NET 클라이언트를 사용하여 HTTP 프록시 서버를 통해 웹 서비스를 사용할 때 오류(기본 연결이 닫혔습니다. 원격 이름을 확인할 수 없음)가 발생하는 문제를 해결하는 데 도움이 됩니다.
원래 제품 버전: .NET Framework
원래 KB 번호: 318140
증상
.NET 클라이언트를 사용하여 HTTP 프록시 서버를 통해 웹 서비스를 사용하는 경우 다음 오류 메시지가 표시될 수 있습니다.
기본 연결이 닫혔습니다. 원격 이름을 확인할 수 없습니다.
원인
웹 서비스와 .NET 클라이언트 사이에 HTTP 프록시 서버가 있으며 적절한 프록시 설정이 구성되지 않았습니다.
해결 방법
이 문제를 해결하려면 .NET 클라이언트에 적절한 프록시 구성 설정을 제공합니다.
Machine.config 파일의 기본 설정은 다음과 같습니다.
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "true"
/>
</defaultProxy>
</system.net>
</configuration>
기본 설정이 프록시 서버 설정을 자동으로 검색하지 않는 경우 falseusessystemdefault
설정한 다음 프록시 서버를 명시적으로 지정합니다. 프록시 서버를 명시적으로 지정하려면 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 NTLM(NT LAN Manager) 인증을 설정하려면 다음 샘플 코드를 사용합니다.
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>