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

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

関連記事

ASP.NETのMVCとは?入門者向けの概要説明やHelloWorld

<目次> (1) ASP.NETのMVCとは?入門者向けの概要説明やHelloWorld  (1-1) ASP.NET MVC5とは?  (1-2) MVCのアーキテクチャ概要  (1-3) ASP. …

C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた

<目次> (1) C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた  (1-1) デリゲートとは?「関数へのポインタ」だけでは説明しきれない・・  (1-2) デリゲ …

ASP.NET MVCのRouteConfigを追加する方法を2つご紹介

  <目次> (1) ASP.NET MVCのRouteConfigを追加する方法を2つご紹介  (1-1) やりたい事の整理  (1-2) 方法1:通常のルーティング  (1-3) 方法2 …

C#のエラー「CS1069~このアセンブリへの参照を追加する事を検討してください」の対処方法+実際のソース例も掲載

<目次> (1) C#のエラー「CS1069~このアセンブリへの参照を追加する事を検討してください」の対処方法  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処法 (1 …

VisualStudioで文字列の検索をソリューション内やプロジェクト内で行う方法

<目次> (1) VisualStudioで文字列の検索をソリューション内やプロジェクト内で行う方法  (1-1) 検索方法   (1-1-1) 「検索と置換」画面を開く   (1-1-2) 検索条件 …

  • English (United States)
  • 日本語
Top