HTTP proxy sunucusu aracılığıyla bir Web hizmeti kullanan bir .NET istemcisinde hata oluşuyor

Bu makale, http ara sunucusu aracılığıyla bir Web hizmetini kullanmak için bir .NET istemcisi kullandığınızda bir hatanın (Temel alınan bağlantı kapatıldı: Uzak ad çözümlenemedi) oluşması sorununu çözmenize yardımcı olur.

Orijinal ürün sürümü: .NET Framework
Özgün KB numarası: 318140

Belirtiler

HTTP proxy sunucusu aracılığıyla bir Web hizmeti kullanmak için bir .NET istemcisi kullandığınızda, aşağıdaki hata iletisini alabilirsiniz:

Temel alınan bağlantı kapatıldı: Uzak ad çözümlenemedi.

Neden

Web hizmeti ile .NET istemcisi arasında bir HTTP proxy sunucusu var ve uygun ara sunucu ayarları yapılandırılmadı.

Çözüm

Bu sorunu çözmek için .NET istemcisine uygun ara sunucu yapılandırma ayarlarını sağlayın.

Machine.config dosyasındaki varsayılan ayarlar şunlardır:

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

Varsayılan ayarlar ara sunucu ayarlarını otomatik olarak algılamazsa false olarak ayarlayın usessystemdefault ve proxy sunucusunu açıkça belirtin. Proxy sunucusunu açıkça belirtmek için Machine.config veya Web.config dosyasını kullanın ya da sunucuyu program aracılığıyla belirtin.

Proxy sunucusunu belirtmek için Machine.config veya Web.config dosya ayarlarını aşağıdaki gibi ayarlayın:

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

Bir nesne kullanarak WebProxy ayarları program aracılığıyla değiştirmek için aşağıdaki örnek kodu kullanın:

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 kimlik doğrulaması gerektiren ara sunucu

Ara sunucu için Windows NT LAN Manager (NTLM) kimlik doğrulamasını ayarlamak için aşağıdaki örnek kodu kullanın:

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

Varsayılan olarak sistem genelinde ara sunucuyu da kullanabilirsiniz. Bunu yapmak için yapılandırma dosyasında aşağıdaki ayarları kullanın:

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

Başvurular