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

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

関連記事

BundleConfig.csの設定および記述方法について

  <目次> (1) BundleConfig.csの設定および記述方法について  (1-1) BundleConfig.csの設定および記述方法について  (1-2) BundleConf …

C#でファイルの存在チェックを行う方法+サンプルプログラムをご紹介

<目次> (1) C#でファイルの存在チェックを行う方法  (1-1) 構文  (1-2) サンプルプログラム (1) C#でファイルの存在チェックを行う方法 (1-1) 構文 (構文) if (!F …

C#のintに?「はてな」(question mark)が付いている意味について

<目次> (1) C#のintに?「はてな」(question mark)が付いている意味について  (1-1) 「int?」とは?  (1-2) 「int?」の型について  (1-3) 「int?」 …

C#で配列に特定の値があるか?をチェックする方法を2つご紹介~ContainsとLINQ~

<目次> (1) C#で配列に特定の値があるか?をチェックする方法  (1-1) 方法①:ListクラスのContainsメソッドを使う方法   (1-1-1) 構文   (1-1-2) サンプルプロ …

C#からDB接続でSQLServerに接続してSELECT文を実行する方法

<目次> (1) C#からDB接続する方法~SQLServerへの接続プログラム例もご紹介~  (1-1) 構文(DB接続)  (1-2) 構文(SELECT文発行)  (1-3) サンプルプログラム …

  • English (United States)
  • 日本語
Top