tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^5: FTPのGetFileSizeでエラーがでる
投稿日: 2010/04/28(Wed) 17:46
投稿者魔界の仮面弁士
> 下記については、どのように設定するのですか?
それはサーバー管理者に問い合わせてください。
(そもそも、そうした追加の権限設定が存在しないサーバーも少なくありません)


ただし先ほどからの繰り返しになりますが、まずは『原因の調査』が先だと思いますよ。

そもそも原因すら分かっていない段階で、想定される対処法を虱潰しに試してみたところで、
無駄な作業になってしまう可能性が高いと思います。第一、複数の要因による複合的な問題で
あったとしたら、運よく解決したとしても、何が問題であったのか分からなくなってしまいます。



今回の場合、GetFileSize (FTP の SIZE コマンド) に対して失敗しているのですから、
 (1) そのサーバーが、SIZE コマンドをサポートしているかどうかを確認する。
 (2) SIZE が使えるなら、VB.NET からの通信結果が正しいかどうかを確認する。
という調査を先に行ってみては如何でしょう。


(1) については、手動で FTP コマンドを送信できるツールで試してみてください。

その結果、SIZE が使えなかったなら、.NET からの GetFileSize も使えないことになるでしょう。
LIST は RFC959 で定義された標準的なコマンドなので、大抵のサーバーで利用できますが、
SIZE は RFC3659 で追加定義されたコマンドであり、サポートしていないサーバーも存在します。


たとえば、フリーソフトの FFFTP であれば、目標の www ディレクトリに移動した後で、
[コマンド]-[任意のコマンド]で『SIZE 12.log』などとすれば、正常動作時には
200 番台の正常系コード(213 など)と共に、ファイルサイズが得られるはずです。
一方、未実装であれば 500番台のコード(おそらく 502)が返されるかと思います。

あるいは Windows 標準の FTP.EXE でも構いません。目標のディレクトリに移動した後で、
『literal SIZE 12.log』のコマンドを試してみて下さい。


それらを試してみた結果、そもそもファイルサイズが返されないのであれば、
サーバー側の制限という可能性もありますので、SIZE コマンドが使用可能かどうか、
サーバー管理者に問い合わせてみた方が良いかと思います。
(なお SIZE の結果は、STRU/MODE/TYPE の指定により異なる可能性があります)


その反対に、手動操作でサイズを取得できるようであれば、今度は別ディレクトリから
SIZE /www/12.log などといったルートからのパス指定が使えるかも調査しておいた方が
良いかもしれません。



次に (2) の方ですが…これはサーバーAおよびサーバーBにおける通信ログを
比較するのが一番です。もし、サーバーログを取得できないようであれば、
前々回に紹介したモニタリングソフトなどを用いて、両サーバーに対する通信内容を
FtpWebRequest での通信時と FTP ツールでの通信時とのそれぞれで比較してみてください。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。