Dies kann entweder programmgesteuert, in Ihrem Code oder deklarativ entweder in der web.config oder in der app.config erreicht werden.
Sie können einen Proxy wie folgt programmgesteuert erstellen:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]");
WebProxy myproxy = new WebProxy("[your proxy address]", [your proxy port number]);
myproxy.BypassProxyOnLocal = false;
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Grundsätzlich weisen Sie das WebProxy
Objekt der request
Objekteigenschaft zu proxy
. Dies request
wird dann das von proxy
Ihnen definierte verwenden.
Um dasselbe deklarativ zu erreichen, können Sie Folgendes tun:
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://[your proxy address and port number]"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
in Ihrer web.config oder app.config. Dadurch wird ein Standardproxy festgelegt, den alle http-Anforderungen verwenden. Abhängig davon, was genau Sie erreichen möchten, benötigen Sie möglicherweise einige der zusätzlichen Attribute des defaultProxy / proxy- Elements. Weitere Informationen finden Sie in der Dokumentation.
BypassProxyOnLocal
Eigenschaft unmittelbar danach auf True (falls erforderlich) zu setzen.Wenn Sie verwenden
WebClient
, verfügt es über eine Proxy- Eigenschaft, die Sie verwenden können.Wie bereits erwähnt, gibt es verschiedene Möglichkeiten, die Erkennung / Verwendung von Proxy-Einstellungen zu automatisieren
Web.Config:
Verwendung der WebProxy-Klasse wie in diesem Artikel beschrieben .
Sie können die Proxy-Einstellungen auch direkt (Konfiguration oder Code) mitgestalten, und Ihre App verwendet diese dann.
Web.Config:
Code:
quelle
Versuchen Sie diesen Code. Rufen Sie es auf, bevor Sie http-Anfragen stellen. Der Code verwendet den Proxy aus Ihren Internet Explorer-Einstellungen. Eines verwende ich jedoch,
proxy.Credentials = ....
da mein Proxyserver ein NTLM-authentifizierter Internet Acceleration Server ist. Probieren Sie es aus.quelle
WebProxy.GetDefaultProxy
ist seit Framework 4.5 veraltet und diese Methode gibt null zurück. Überlegen Sie besser, bevor Sie es verwendenCredentialCache.DefaultNetworkCredentials
. Wenn Sie etwas in CredentialCache eingefügt haben und Ihr Proxy solche Anmeldeinformationen benötigt, sollte es funktionieren. Sonst hilft es nicht.Wenn die App den Systemstandard-Proxy verwenden soll, fügen Sie diesen Ihrer Application.exe.config hinzu (wobei application.exe der Name Ihrer Anwendung ist):
Weitere Details finden Sie im MSDN-Artikel auf System.Net
quelle
Dieser Einzeiler funktioniert für mich:
CredentialCache.DefaultNetWorkCredentials
ist die in Internet Explorer festgelegte Proxy-Einstellung.WebRequest.DefaultWebProxy.Credentials
wird für alle Internetverbindungen in der Anwendung verwendet.quelle
Der Code von Foole funktionierte perfekt für mich, aber vergessen Sie in .NET 4.0 nicht zu überprüfen, ob Proxy NULL ist, was bedeutet, dass kein Proxy konfiguriert ist (außerhalb der Unternehmensumgebung).
Hier ist der Code, der mein Problem mit unserem Unternehmens-Proxy gelöst hat
quelle
Dieser Code hat bei mir funktioniert:
quelle
Die automatische Proxyerkennung ist ein Prozess, bei dem ein Webproxyserver vom System identifiziert und zum Senden von Anforderungen im Namen des Clients verwendet wird. Diese Funktion wird auch als Web Proxy Auto-Discovery (WPAD) bezeichnet. Wenn die automatische Proxyerkennung aktiviert ist, versucht das System, ein Proxy-Konfigurationsskript zu finden, das für die Rückgabe der Proxy-Gruppe verantwortlich ist, die für die Anforderung verwendet werden kann.
http://msdn.microsoft.com/en-us/library/fze2ytx2.aspx
quelle
quelle
Ich werde ein Beispiel verwenden, um die obigen Antworten zu ergänzen.
Beim Versuch, Pakete über das Web Platform Installer zu installieren, sind Proxy-Probleme aufgetreten
Auch hier wird eine Konfigurationsdatei verwendet, die WebPlatformInstaller.exe.config lautet
Ich habe versucht , die Änderungen in vorschlagen dieses IIS - Forum , das ist
und
Nichts davon hat funktioniert.
Was für mich funktioniert hat war das -
Das Modul musste beim Web Platform Installer registriert sein, um es verwenden zu können.
quelle