2017-01-26 6 views
0

FtpWebRequestクラスを使用すると、私は奇妙な動作に気付きました。私はFtpWebRequestを作成してドイツ気象サービスからデータを取得したいと考えています。だから私はsthを行います。私は、エラー、次の取得しています。このコードでFTPWebRequestクラスからの奇妙な振る舞い

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

:次のような

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

これは非常に明確であり、私はこれを修正するプロキシを追加すると思ったが、私は、奇妙な何かを発見しました。このコードは動作しています:

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

誰かが私にこれを説明することができますか?私は両方の場合でプロキシを保存するためにデバッガを使用しています。なぜ私は2番目のケースでエラーメッセージを受け取っていないのですか?

答えて

2

デフォルトでは、WebRequestはシステム全体のプロキシ(IE設定で定義されたもの)を使用します。そのプロキシに資格情報が必要な場合は、それらを提供する必要があります。 Proxyをnullに設定すると、直接接続を使用してプロキシを完全にバイパスします。

the codeでこれを見ることができます。プロキシを設定すると、sets a private m_ProxyUserSetがtrueに設定され、使用する実際のプロキシを決定するときにはchecked laterになります。明示的にプロキシを指定しなかった場合、暗黙的に使用されますWebRequest.InternalDefaultWebProxy

+0

これは私にはっきりとありがとうございました:) – Sebi