Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C#

C#で「(407) プロキシ認証が必要です」エラーが出た時の対処方法

投稿日:2022年6月30日 更新日:

 

<目次>

(1) C#で「(407) プロキシ認証が必要です」エラーが出た時の対処方法
 (1-1) エラー事象
 (1-2) 原因
 (1-3) 対処例
 (1-4) 補足:ID/Passwordの直打ちを回避する方法

(1) C#で「(407) プロキシ認証が必要です」エラーが出た時の対処方法

C#で「(407) プロキシ認証が必要です」エラー(Proxy Authentication Required)が出た時の対処方法についてご紹介します。
 
(参考)プロキシとは?を知りたい方向けの記事↓
→Proxyの基本知識と確認コマンド~OSやブラウザ別の設定について

(1-1) エラー事象

C#でインターネットからファイルをダウンロードする処理を実行した際に、下記のエラーが発生しました。
 
(エラーメッセージ)
ハンドルされていない例外: 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)
(図111)

(1-2) 原因

→Proxyサーバの認証設定を行っていないため

WebProxyクラスはプロキシ設定を保持しており、WebRequestクラスのインスタンスがリクエスト(http,httpsなど)を送る際にWebプロキシが使われているかどうか?の識別(及びプロキシ認証が必要な場合はその認証処理)をするために使用されます。
 
NetworkCredentialクラスでID/Passwordを設定し、WebRequestクラスのDefaultWebProxyプロパティ(≒メンバ変数)で、デフォルトで使用するプロキシサーバの設定(今回はID/Password)をセットします。
 
(構文)
WebProxy proxy = new WebProxy("[プロキシサーバのURL]", true);
proxy.Credentials = new NetworkCredential("[プロキシ認証のID]", "[プロキシ認証のパスワード]");
WebRequest.DefaultWebProxy = proxy;
(図121)
 

(1-3) 対処例

上記の構文を使って、試しにプロキシ認証を要する処理を行ってみます。例えば、インターネット上のファイルをダウンロードするといった処理です。下記のサンプルではZoomのソフトウェアをURLからダウンロードする処理をしていますが、その前段で今回紹介したProxy認証設定をしています。
 
・(0) Proxyサーバの認証設定を行う
→今回のポイント
・(1) Zoom Client のダウンロードを開始します
→テスト用のコード
 
(サンプルプログラム)
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);
        }
    }
}
(図131)

(1-4) 補足:ID/Passwordの直打ちを回避する方法

「Console.ReadLine();」でコンソールの入力内容を読み取りします。
(サンプルプログラム)
                //# プロキシ認証に必要なID/Passwordの設定
                //# コンソールから入力を促す
                Console.WriteLine("プロキシIDの入力:");
                //# ユーザーの入力値をString型の変数に格納
                string userName = Console.ReadLine();
                Console.WriteLine("プロキシPasswordの入力:");
                //# ユーザーの入力値をString型の変数に格納
                string userPass = Console.ReadLine();

                proxy.Credentials = new NetworkCredential(userName, userPass);

Adsense審査用広告コード


Adsense審査用広告コード


-C#

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

C#のvarとは?型を調べる方法や制約事項についてもご紹介

<目次> (1) C#のvarとは?型を調べる方法や制約事項についてもご紹介  (1-1) C#のvarとは?  (1-2) サンプルプログラム:varの基本動作確認#1  (1-3) サンプルプログ …

.NETで「SystemInvalidOperationException」例外(ZombieCheck、Rollback)の調査記録

<目次> (1) .NETで「SystemInvalidOperationException」例外(ZombieCheck、Rollback)の調査記録  (1-1) エラーメッセージ  (1-2) …

C#のdynamic型とは?使いどころやvarとの違いもご紹介

  <目次> (1) C#のdynamic型とは?使いどころやvarとの違いもご紹介  (1-1) dynamic型とは?  (1-2) dynamic型の使いどころ  (1-3) 動作確認 …

C#のスレッド(Thread)とは?概要やサンプルプログラムをご紹介

  <目次> (1) C#のスレッド(Thread)とは?概要やサンプルプログラムをご紹介  (1-1) 概要   (1-1-1) スレッドのライフライクルについて   (1-1-2) ma …

BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)

  <目次> (1) BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)  (1-1) 前提条件  (1-2) 確認ポイント   (確認①)Bundl …

  • English (United States)
  • 日本語
Top