Freigeben über


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 (die zugrunde liegende Verbindung geschlossen wurde: Der Remotename konnte nicht behoben werden), wenn Sie einen .NET-Client verwenden, um einen Webdienst über einen HTTP-Proxyserver zu nutzen.

Originalproduktversion: .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.

Beschluss

Um dieses Problem zu beheben, geben Sie die richtigen Proxykonfigurationseinstellungen an den .NET-Client an.

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

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

Wenn die Standardeinstellungen die Proxyservereinstellungen nicht automatisch erkennen, auf usessystemdefault festgelegt und dann explizit den Proxyserver festlegen. Um den Proxyserver explizit festzulegen, verwenden Sie entweder die Datei "Machine.config " oder "Web.config ", oder geben Sie den Server programmgesteuert an.

Um den Proxyserver anzugeben, legen Sie die Dateieinstellungen "Machine.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 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 NTLM-Authentifizierung erfordern

Verwenden Sie den folgenden Beispielcode, um die 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>

Verweise