Fehler tritt auf einem .NET-Client auf, der einen Webdienst über einen HTTP-Proxyserver nutzt

In diesem Artikel erfahren Sie, wie Sie ein Problem beheben, bei dem ein Fehler (Die zugrunde liegende Verbindung wurde geschlossen: Der Remotename konnte nicht behoben werden) auftritt, 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

Symptome

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 für den .NET-Client an.

Im Folgenden sind die Standardeinstellungen in der Machine.config-Datei aufgeführt:

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

Wenn die Standardeinstellungen die Proxyservereinstellungen nicht automatisch erkennen, legen Sie auf false festusessystemdefault, und legen Sie dann explizit den Proxyserver fest. Um den Proxyserver explizit festzulegen, verwenden Sie entweder die Machine.config oder Web.config-Datei , oder geben Sie den Server programmgesteuert an.

Um den Proxyserver anzugeben, legen Sie die Machine.config - oder Web.config-Dateieinstellungen 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 WebProxy -Objekts zu ä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 die Windows NT LAN Manager-Authentifizierung (NTLM) 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 einen 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>

References