64 Stimmen

Wie kann ich den Standard-Proxy so einstellen, dass er Standard-Anmeldedaten verwendet?

Der folgende Code funktioniert bei mir:

var webProxy = WebProxy.GetDefaultProxy();
webProxy.UseDefaultCredentials = true;
WebRequest.DefaultWebProxy = webProxy;

Leider, WebProxy.GetDefaultProxy() ist veraltet. Was sollte ich sonst tun?

(die Verwendung von app.config zum Festlegen der defaultProxy-Einstellungen ist in meinem Einsatz nicht erlaubt)

1 Stimmen

Siehe wir haben zwei Möglichkeiten, Proxy in .net-Anwendung zu verwenden. Die erste Möglichkeit ist die Verwendung von Proxy-Einstellungen in web.config. Die zweite Möglichkeit ist die Verwendung der webproxy Klasse im Code. In web.config können Sie keine Netzwerk-Anmeldeinformationen (Benutzer und Passwort) verwenden. Aber im Code können Sie Anmeldeinformationen verwenden. Sie können hier mehr über Proxy erfahren - goo.gl/bLDAHp

2voto

smack Punkte 113

Dieser Thread ist alt, aber ich bin erst kürzlich über das defaultProxy-Problem gestolpert und vielleicht hilft es anderen.

Ich habe die Konfigurationseinstellung wie von Andrew vorgeschlagen verwendet. Bei der Bereitstellung erhielt mein Kunde eine Fehlermeldung, die besagte, dass er nicht über ausreichende Rechte verfügte, um die Konfiguration "defaultProxy" festzulegen.

Da ich nicht weiß, warum ich nicht das Recht habe, diese Konfiguration einzustellen und was ich dagegen tun kann, habe ich sie einfach entfernt, und es funktionierte immer noch. Es scheint also, dass in VS2013 dieses Problem behoben ist.

Und wenn wir schon dabei sind:

    WebRequest.DefaultWebProxy.Credentials = new NetworkCredential("ProxyUsername", "ProxyPassword");

verwendet den Standard-Proxy mit Ihren Anmeldedaten. Wenn Sie erzwingen wollen, dass kein Proxy verwendet wird, setzen Sie den DefaultWebProxy einfach auf null (obwohl ich nicht weiß, ob man das will).

1voto

jyz Punkte 5681

In meinem Einsatz kann ich weder app.config verwenden noch das einbetten, was Andrew Webb vorgeschlagen hat.
Also mache ich das:

    IWebProxy proxy = WebRequest.GetSystemWebProxy();
    proxy.Credentials = CredentialCache.DefaultCredentials;

    WebClient wc = new WebClient();
    wc.UseDefaultCredentials = true;
    wc.Proxy = proxy;

Nur für den Fall, dass Sie meine IE-Einstellungen überprüfen möchten:

enter image description here

0voto

Jim Scott Punkte 2423

Dies ist die neue vorgeschlagene Methode.

WebRequest.GetSystemWebProxy();

3 Stimmen

Könnten Sie bitte klären, was das "Neue" ist, ist es nicht seit v2 wie das Zeug in der anderen Antwort? Können Sie erläutern, inwiefern diese Antwort anders und/oder besser ist als die andere?

0 Stimmen

Akshinthala: Die Frage besagt, dass die Methode, die er verwendet, die veraltete Methode WebProxy.GetDefaultProxy() ist, und er wollte wissen, was er stattdessen verwenden sollte. Wenn Sie die Dokumentation für diese Methode aufrufen msdn.microsoft.com/de-us/library/ sehen Sie, dass dort die aktualisierte Methode aufgeführt ist, die nun verwendet werden sollte. Anwendungen sollten die Eigenschaft WebRequest.DefaultWebProxy und die Methode WebRequest.GetSystemWebProxy anstelle der Methode GetDefaultProxy verwenden.

0voto

Tolga Punkte 1993

Die meisten der Antworten hier verwenden veraltete APIs. Der neue Weg, dies in Powershell 5/6/7 zu tun, ist:

[System.Net.WebRequest]::GetSystemWebProxy().Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials;

Sie können die obige Zeile in Ihre Powershell 5 und Powershell 6/7 einfügen $Profile.AllUsersAllHosts.

-3voto

Rodrigo T. Punkte 697

In einigen Systemen muss das Proxy-Property auf Null gesetzt werden:

Net.WebRequest.DefaultWebProxy.Credentials = System.Net.CredentialCache.DefaultCredentials Dim request As WebRequest = WebRequest.Create(sRemoteFileURL) request.Proxy = Nothing

Es ist ein Fehler.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X