<目次>
(1) C#で「(407) プロキシ認証が必要です」エラーが出た時の対処方法
(1-1) エラー事象
(1-2) 原因
(1-3) 対処例
(1-4) 補足:ID/Passwordの直打ちを回避する方法
(1) C#で「(407) プロキシ認証が必要です」エラーが出た時の対処方法
(1-1) エラー事象
ハンドルされていない例外: System.Net.WebException: リモート サーバーがエラーを返しました:(407)プロキシ認証が必要です 場所 System.Net.WebClient.DownloadFile(Uri address, String fileName) 場所 System.Net.WebClient.DownloadFile(String address, String fileName) 場所 TestDownloadApp.Program.Main(String[] args)
(1-2) 原因
WebProxy proxy = new WebProxy("[プロキシサーバのURL]", true); proxy.Credentials = new NetworkCredential("[プロキシ認証のID]", "[プロキシ認証のパスワード]"); WebRequest.DefaultWebProxy = proxy;


(1-3) 対処例
using System; using System.Diagnostics; using System.Net; using System.Reflection; using System.Threading; namespace RP_ITxxxx_407Error_AuthenticateProxy { class Program { static void Main(string[] args) { try { //### (0) Proxyサーバの認証設置を行う Console.WriteLine("---(0) Proxyサーバの認証設定を行う"); //# WebProxyクラスのインスタンスを生成 WebProxy proxy = new WebProxy("http://[プロキシサーバのアドレス]:8080", true); //# プロキシ認証に必要なID/Passwordの設定 proxy.Credentials = new NetworkCredential("[プロキシ認証のID]", "[プロキシ認証のパスワード]"); //# WebRequestクラスのDefaultWebProxyプロパティ(≒メンバ変数)で //# デフォルトで使用するプロキシサーバの設定(今回はID/Password)をセット WebRequest.DefaultWebProxy = proxy; Console.WriteLine("---(1) Zoom Client のダウンロードを開始します"); //### (1)インターネットからzoomのインストーラをダウンロード //# WebClientクラスのインスタンスを生成 using (var client = new WebClient()) { //# ZoomのインストーラをダウンロードするURLを引数に指定して、インストーラをダウンロード client.DownloadFile("https://zoom.us/client/5.9.3.3169/ZoomInstaller.exe?archType=x64", "ZoomInstaller.exe"); } } catch (Exception e) { Console.WriteLine(e.Message); } Thread.Sleep(2000); } } }


(1-4) 補足:ID/Passwordの直打ちを回避する方法
//# プロキシ認証に必要なID/Passwordの設定 //# コンソールから入力を促す Console.WriteLine("プロキシIDの入力:"); //# ユーザーの入力値をString型の変数に格納 string userName = Console.ReadLine(); Console.WriteLine("プロキシPasswordの入力:"); //# ユーザーの入力値をString型の変数に格納 string userPass = Console.ReadLine(); proxy.Credentials = new NetworkCredential(userName, userPass);