故郷を離れて三十数年、関東で暮らす永遠の少年のどーってことない日記
xxSEARCHxx
プロフィール

ST☆FF

Author:ST☆FF
HTTといえばインテルの Hyper-Threading Technology!・・・ではなく、放課後ティータイムのことだと思います。

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム
ブログ内検索
RSSフィード
リンク

最近の記事


スポンサーサイト 

--/--/-- --:--/--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CATEGORY:スポンサー広告 | CM(-) | TB(-) |

FtpWebRequest の落とし穴 

2013/04/07 01:38/Sun
Windows Server に対して、クライアントアプリから FTP を使用したい場合がある。
特に周辺処理系がUNIX上にあり、制御系が Windows Server で動いている環境において
安価にファイル転送が行えるため、よく用いられるプロトコルである。
.netアプリの場合、一般的に System.Net.FtpWebRequest、System.Net.FtpWebResponseの
両クラスを使用することで、シンプルなコードでそのプロトコルの恩恵に与ることが出来る。

ところでこの FtpWebRequest クラスには思いがけない落とし穴がある。
よく知られたFTP 用のパラメータを設定して利用しても、意味不明のエラーが発生する場合が
あるのだ。
たとえば FtpWebRequest インスタンスの生成を例にとると

Dim ftpReq As System.Net.FtpWebRequest = _
CType(System.Net.WebRequest.Create(uri), System.Net.FtpWebRequest)

において、下記エラーで WebRequest.Create(uri)がインスタンス生成に失敗する。
「リモート サーバーがエラーを返しました: (403) 使用不可能」

あるいはファイルをアップロードするためのStreamを取得する場合、

Dim reqStrm As System.IO.Stream = ftpReq.GetRequestStream()

において GetRequestStream()で下記例外が発生する。
「要求された FTP コマンドは、HTTP プロキシを使用しているときにはサポートされません。」

どうやら FtpWebRequest が WebRequest を継承しているため、デフォルトでHTTP Proxy を
使用する設定になっている事が原因のようだ。
FTPであるにもかかわらず、IE に設定してある HTTP Proxy を勝手に使用している事がそもそもの
間違いなのである。

HTTP Proxy を無効にするにはインスタンスのプロパティに対し

ftpReq.proxy = Nothing

としても良いのだが、正解はstaticプロパティへの1行で息の根を止めることだ。

System.Net.WebRequest.DefaultWebProxy = Nothing


スポンサーサイト

CATEGORY:仕事関係 | CM(0) | TB(0) |
xx HOME xx
トラックバックURL
→http://3335.blog106.fc2.com/tb.php/223-1e8decde

コメントの投稿














xx HOME xx

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。