2017-01-26 7 views
0

Ich bemerkte ein seltsames Verhalten bei der Verwendung der FtpWebRequest-Klasse. Ich möchte ein FtpWebRequest erstellen, um einige Daten vom Deutschen Wetterdienst zu erhalten. Also tu ich etw. wie folgt aus:Seltsames Verhalten von FTPWebRequest-Klasse

var request = (FtpWebRequest)WebRequest.Create(requestUri); 
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
request.Credentials = Credentials; 
var response = request.GetResponse() as FtpWebResponse; 

Mit diesem Code folgenden ich Fehler bekommen:

The remote server returned an error: (407) Proxy Authentication Required

Das ist ganz klar, und ich dachte, einen Proxy hinzufügen dies beheben, aber ich fand etwas seltsam dann. Dieser Code funktioniert:

var request = (FtpWebRequest)WebRequest.Create(requestUri); 
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
request.Credentials = Credentials; 
request.Proxy = null; 
var response = request.GetResponse() as FtpWebResponse; 

Ist jemand da draußen, der mir das erklären kann? Ich habe den Debugger zum Speichern verwendet. Proxy ist in beiden Fällen null. Warum bekomme ich die Fehlermeldung nicht im zweiten Fall oder umgekehrt?

Antwort

2

Standardmäßig verwendet WebRequest den systemweiten Proxy (den in den IE-Einstellungen definierten). Wenn für diesen Proxy Anmeldeinformationen erforderlich sind, müssen Sie diese angeben. Wenn Sie Proxy auf null setzen, umgehen Sie den Proxy vollständig und verwenden eine direkte Verbindung.

Sie können dies in the code sehen. Wenn Sie den Proxy festlegen, sets a private m_ProxyUserSet Flag auf True, das ist checked later bei der Entscheidung über den tatsächlichen Proxy zu verwenden. Wenn Sie nicht explizit einen Proxy angeben, verwendet er implizit WebRequest.InternalDefaultWebProxy

+0

Vielen Dank das macht es mir klar :) – Sebi