« SP1 | メイン | Visual Web Developer 2008インストール中… »

2008年08月16日

仕事の周辺 » .NET

.NET でFTP

まず無料で使えるものを探すことから(^^;)。
こういう時はCPANのあるPerlは最高だなと(^^;)。しょうがないからググって上の方から覗きまわって、自由に使えて、ドキュメントがしっかりしていて、動くサンプルもついててという条件を満たすものを探し出す、という根気のいる仕事をするわけですが(それでも自分で書くより早いというか信頼できる)、思ったよりも早く手ごろなものが見つかりました。TKFP使わせていただくことになりました。
躓いた箇所は

CMSもどきの作成で、ページ単位の更新なので該当ページ1ページのみFTPのつもりで書き始めたので、ファイル転送部分をオープンからクローズまで一連の流れにしてしまい、あとでWhat's New用のファイルやRSS用、モバイル用を追加した際、面倒なのでそのまま同じルーティンを使った(ファイル1枚送るたびにオープン、クローズをする)。機械のやることだし、文句は言われないだろうと思ってたら「Active接続用のポート準備に失敗しました」のエラーがでたこと(^^;)。ここ見てやはりオープンとクローズはそれぞれ別個にわけ、一度の接続で複数のファイルを転送するように変更しました。

変更後は上記のエラーが出ることはなくなりましたが、今度は「TKFP.Net.ResposeTimeOutException: サーバーからのレスポンスがありませんでした。通信はタイムアウトしました。」というエラーが出たり出なかったり。しかもサーバー側に空ファイルを作成してから(既存のファイルを空にしてから)死ぬのでWhat'sNewファイルが読めないトップページで悲惨なエラーが出ることに(^^;)。ログをとってみるとサーバーにTYPE Iを送った後レスポンス待ちでタイムアウトが発生しているようで、まさにエラーメッセージ通り。何度かテストしているうちに、時間を置いて試した1度目は必ず成功し、その直後にもう一度接続すると必ず失敗することに気づく。で、付属のサンプルで接続、アップロード、切断、接続、アップロードを繰り返してみてもちゃんと動くし。お金出して有料のライブラリ集買ってもらおうかと傾きかけていたのが急にしゃっきりしてログを見比べたらなんかPASSIVになってるみたい。真似してConnectionModesをPassiveにしたらサクサク転送してくれました。感動です。

投稿者 idic : 2008年08月16日 23:00

コメント

コメントしてください

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?