Ошибка возникает на клиенте .NET, который использует веб-службу через прокси-сервер HTTP

Эта статья поможет устранить проблему, из-за которой возникает ошибка (базовое подключение закрыто: не удалось устранить удаленное имя) при использовании клиента .NET для использования веб-службы через прокси-сервер HTTP.

Исходная версия продукта: платформа .NET Framework
Оригинальный номер базы знаний: 318140

Симптомы

При использовании клиента .NET для использования веб-службы через прокси-сервер HTTP может появиться следующее сообщение об ошибке:

Базовое подключение закрыто: не удалось разрешить удаленное имя.

Причина

Между веб-службой и клиентом .NET существует прокси-сервер HTTP, и соответствующие параметры прокси-сервера не настроены.

Разрешение

Чтобы устранить эту проблему, предоставьте клиенту .NET правильные параметры конфигурации прокси-сервера.

Ниже приведены параметры по умолчанию в файле Machine.config .

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

Если параметры по умолчанию не обнаруживают параметры прокси-сервера автоматически, установите значение usessystemdefaultfalse, а затем явно назначьте прокси-сервер. Чтобы явно назначить прокси-сервер, используйте файл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>

Ссылки