2016-04-04 22 views
1

Windows 7 SP1。
ドメインネットワーク。
.NET Framework 4.6.1。「(502)Bad Gateway」エラーが発生するのはなぜですか?

すべてのインターネットブラウザで、インターネット接続用のプロキシ設定が構成されています(正常に動作します)。

インターネットからファイルをダウンロードする必要があります。 WebClientは、デフォルトのインターネットブラウザからプロキシ設定を読み込み、現在のプロセスの資格情報を使用するため、これらの条件が正常にダウンロードされるのに十分だと考えています。しかし、例外があります(私のコードでコメントを見てください):

static void Main(string[] args) { 
    String file_name = Path.GetRandomFileName(); 
    String full_path = Environment.ExpandEnvironmentVariables(
     Path.Combine(@"%LocalAppData%\Temp", file_name)); 

    using (WebClient client = new WebClient()) { 
     client.Credentials = CredentialCache.DefaultCredentials; 
     //client.Proxy = WebRequest.GetSystemWebProxy(); 
     var proxyUri = WebRequest.GetSystemWebProxy() 
      .GetProxy(new Uri("https://yadi.sk/i/jPScGsw9qiSXU")); 

     try {      
      client.DownloadFile(proxyUri, full_path); 
     } 
     catch (Exception ex) { 
      // The remote server returned an error: (502) Bad Gateway. 
      Console.WriteLine(ex.Message); 
     } 
    } 
    Console.WriteLine("Press any key for exit."); 
    Console.ReadKey(); 
} 

私は間違っていましたか?

enter image description here

+0

これは変です。あなたがやっていることはうまくいくはずです。どのリクエストが実際に送信されているかを見るために、フィドラーのようなWebデバッガーを試しましたか? –

+0

これをapp.configに追加しようとしましたか? http://stackoverflow.com/a/11787116/2330575 –

+0

私は自分のコードを更新しました(今は他のエラーメッセージがあります)。以前はWebデバッガを使用していました。通常のコンソールアプリケーションです。 –

答えて

1

その後、WebリクエストのプロキシURLとして設定し、特定のURLのプロキシを取得する必要があります。

static void Main(string[] args) { 
    String file_name = Path.GetRandomFileName(); 
    String full_path = Environment.ExpandEnvironmentVariables(
     Path.Combine(@"%LocalAppData%\Temp", file_name)); 

    using (WebClient client = new WebClient()) { 
     client.Credentials = CredentialCache.DefaultCredentials; 
     var proxyUri = WebRequest.GetSystemWebProxy() 
      .GetProxy(new Uri("https://yadi.sk/i/jPScGsw9qiSXU")); 
     client.Proxy = new WebProxy(proxyUri); 
     client.Proxy.Credentials = CredentialCache.DefaultCredentials; 

     try {      
      client.DownloadFile("https://yadi.sk/i/jPScGsw9qiSXU", full_path); 
     } 
     catch (Exception ex) { 
      // The remote server returned an error: (502) Bad Gateway. 
      Console.WriteLine(ex.Message); 
     } 
    } 
    Console.WriteLine("Press any key for exit."); 
    Console.ReadKey(); 
} 

これは、アクセスしようとしているURLによってプロキシURIが異なる場合にのみ実装されます。

+0

ありがとうございますが、私は再び同じ問題を抱えています。 –

+0

最新の更新を参照してください –

+0

'proxyUri'は' Uri'のインスタンスですが、 'client.Proxy'は' IWebProxy'のインスタンスです。 –