<目次>
(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);
