タイトル : 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 ツールでの通信時とのそれぞれで比較してみてください。 |