[.NET] FtpWebRequestでのHTTPプロキシエラー対策

[.NET] FtpWebRequestでのHTTPプロキシエラー対策

FtpWebRequest

.NET でFTPを使用してファイル転送等を行う場合、System.Net.FtpWebRequestクラスを利用することがあります。このクラスを用いることで、シンプルなコードでFTPが実現できます。

FtpWebRequestを利用してファイルをFTP転送使用したときに、次のエラーが発生しました。その対応をメモ代わりにまとめます。

HTTP プロキシエラーと対策

ftpRequest.GetRequestStream()

FtpWebRequestクラスでファイルアップロードを行う場合、上記のようなコードでアップロード用のストリームを取得しますが、この箇所で下記エラーが発生しました。

要求された FTP コマンドは、HTTP プロキシを使用しているときにはサポートされません。

対策として、ProxyプロパティをNothing(Null)を設定し、プロキシを使用しないようにすると、うまくいきます。

ftpRequest.Proxy = Nothing
ftpRequest.GetRequestStream()

このプロキシの設定値はIEのローカル エリア ネットワークの設定を使用して、システムによって設定されるようです。詳しくは参考URLからどうぞ。以下、一部引用して終わります。

Proxy プロパティを識別、 IWebProxy FTP サーバーと通信するインスタンス。 プロキシは、構成ファイルと、Internet Explorer のローカル エリア ネットワークの設定を使用して、システムによって設定されます。 プロキシを使用しないことを指定する Proxy によって返されるプロキシ インスタンスを GlobalProxySelection.GetEmptyWebProxy メソッドです。 自動プロキシ検出の詳細については、次を参照してください。 自動プロキシ検出します。
設定する必要があります Proxy 要求のストリームへのデータの書き込みや、応答を取得する前にします。 変更する Proxy 呼び出した後、 GetRequestStream, 、BeginGetRequestStream, 、GetResponse, 、または BeginGetResponse メソッド、 InvalidOperationException 例外です。
FtpWebRequest クラスには、HTTP、および ISA ファイアウォール クライアント プロキシがサポートしています。
指定されたプロキシが HTTP プロキシでのみ、 DownloadFile, 、ListDirectory, と ListDirectoryDetails コマンドがサポートされています。

参考URL

C#カテゴリの最新記事