O erro ocorre em um cliente .NET que consome um serviço Web por meio de um servidor proxy HTTP

Este artigo ajuda você a resolve um problema em que um erro (a conexão subjacente foi fechada: o nome remoto não pôde ser resolvido) ocorre quando você usa um cliente .NET para consumir um serviço Web por meio de um servidor proxy HTTP.

Versão original do produto: .NET Framework
Número original do KB: 318140

Sintomas

Ao usar um cliente .NET para consumir um serviço Web por meio de um servidor proxy HTTP, você poderá receber a seguinte mensagem de erro:

A conexão subjacente foi fechada: o nome remoto não pôde ser resolvido.

Motivo

Existe um servidor proxy HTTP entre o serviço Web e o cliente .NET e as configurações de proxy adequadas não foram configuradas.

Resolução

Para resolve esse problema, forneça as configurações de configuração de proxy adequadas para o cliente .NET.

Veja a seguir as configurações padrão no arquivo Machine.config :

<configuration>
    <system.net>
        <defaultProxy>
            <proxy
               usesystemdefault = "true"
            />
        </defaultProxy>
    </system.net>
</configuration>

Se as configurações padrão não detectarem automaticamente as configurações do servidor proxy, defina usessystemdefault como false e designem explicitamente o servidor proxy. Para designar o servidor proxy explicitamente, use o arquivoMachine.config ou Web.config ou especifique o servidor de forma programática.

Para especificar o servidor proxy, defina as configurações do arquivoMachine.config ou Web.config da seguinte maneira:

<configuration>
    <system.net>
        <defaultProxy>
            <proxy
               usesystemdefault = "false"
               proxyaddress="http://proxyserver"
               bypassonlocal="true"
            />
        </defaultProxy>
    </system.net>
</configuration>

Para alterar as configurações programaticamente usando um WebProxy objeto, use o seguinte código de exemplo:

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 ();

Servidores proxy que exigem autenticação NTLM

Para definir Windows NT autenticação do NTLM (LAN Manager) para o servidor proxy, use o seguinte código de exemplo:

using System.Net;
WebProxy myProxy = new WebProxy ("http://proxyserver:port", true);
myProxy.Credentials = CredentialCache.DefaultCredentials;
FindServiceSoap myFindService = new FindServiceSoap ();
myFindService.Proxy = myProxy;

Você também pode usar o proxy em todo o sistema como padrão. Para fazer isso, use as seguintes configurações no arquivo de configuração:

<configuration>
    <system.net>
        <defaultProxy>
            <proxy
               proxyaddress = "http://proxyserver:80"
               bypassonlocal = "true"
            />
        </defaultProxy>
    </system.net>
</configuration>

Referências