Fehler tritt auf einem .NET-Client auf, der einen Webdienst über einen HTTP-Proxyserver verwendet
Dieser Artikel hilft Ihnen, ein Problem zu beheben, bei dem ein Fehler auftritt (die zugrunde liegende Verbindung wurde geschlossen: Der Remotename konnte nicht aufgelöst werden) wenn Sie einen .NET-Client verwenden, um einen Webdienst über einen HTTP-Proxyserver zu nutzen.
Ursprüngliche Produktversion: .NET Framework
Ursprüngliche KB-Nummer: 318140
Problembeschreibung
Wenn Sie einen .NET-Client verwenden, um einen Webdienst über einen HTTP-Proxyserver zu nutzen, wird möglicherweise die folgende Fehlermeldung angezeigt:
Die zugrunde liegende Verbindung wurde geschlossen: Der Remotename konnte nicht aufgelöst werden.
Ursache
Zwischen dem Webdienst und dem .NET-Client ist ein HTTP-Proxyserver vorhanden, und die richtigen Proxyeinstellungen wurden nicht konfiguriert.
Lösung
Um dieses Problem zu beheben, geben Sie die richtigen Proxykonfigurationseinstellungen an den .NET-Client an.
Es folgen die Standardeinstellungen in derMachine.configDatei:
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "true"
/>
</defaultProxy>
</system.net>
</configuration>
Wenn die Standardeinstellungen die Proxyservereinstellungen nicht automatisch erkennen, legen Sie usessystemdefault diese auf "false" fest, und legen Sie dann den Proxyserver explizit fest. Um den Proxyserver explizit festzulegen, verwenden Sie entweder die dateiMachine.config oder Web.config, oder geben Sie den Server programmgesteuert an.
Um den Proxyserver anzugeben, legen Sie die DateieinstellungenMachine.config oder Web.config wie folgt fest:
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "false"
proxyaddress="http://proxyserver"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
</configuration>
Verwenden Sie den folgenden Beispielcode, um die Einstellungen programmgesteuert mithilfe eines Objekts zu WebProxy ändern:
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 ();
Proxyserver, die eine NTLM-Authentifizierung erfordern
Verwenden Sie den folgenden Beispielcode, um Windows NT LAN Manager (NTLM)-Authentifizierung für den Proxyserver festzulegen:
using System.Net;
WebProxy myProxy = new WebProxy ("http://proxyserver:port", true);
myProxy.Credentials = CredentialCache.DefaultCredentials;
FindServiceSoap myFindService = new FindServiceSoap ();
myFindService.Proxy = myProxy;
Sie können auch systemweiten Proxy als Standard verwenden. Verwenden Sie dazu die folgenden Einstellungen in der Konfigurationsdatei:
<configuration>
<system.net>
<defaultProxy>
<proxy
proxyaddress = "http://proxyserver:80"
bypassonlocal = "true"
/>
</defaultProxy>
</system.net>
</configuration>