1

古い AS/400 サーバーからいくつかのファイルを ftp 経由でダウンロードする必要があります。私のコードは多かれ少なかれ次のようになります。

FtpWebRequest _request = (FtpWebRequest)WebRequest.Create("ftp://ftpaddress/FOO.CSV");
_request.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword);
_request.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse response = (FtpWebResponse)_request.GetResponse();

ただし、次のメッセージとともに例外がスローされています。

501 Character (/) not allowed in object name.

AS400 は / とは異なるパス区切り文字を使用していると思いますが、(1) FtpWebRequest が受け入れ、(2) AS400 が理解する方法で uri を表現する方法がわかりません。

他の誰かがこれにぶつかりましたか?

4

4 に答える 4

2

このページによると、fwd スラッシュパス区切り文字です。

スラッシュは、FTP サーバーに送信されるパスの区切り文字です。

Microsoft のフォーラム (2005 年) での同様の会話は、それが FtpWebRequest のバグであることを示しています。

現在、FtpWebRequest は引用符をサポートしておらず、コードを公開せずにメソッドをオーバーライドできる方法を思いつきません。 Mariya Atanasova [NCL] MSFT、モデレーター、2005 年 11 月

最新バージョンに更新するか、別のライブラリを試してください。MS フォーラムのスレッドにはいくつかあります。

于 2009-12-18T21:44:56.897 に答える
2

このメッセージは過去によくありましたが、名前の形式を変更するのを忘れていたことを意味していました。

AS400 で FTP を実行する場合は 2 つの名前形式が可能で、FTP コマンド NAMEFMT で変更できます。

0 はライブラリ システム ファイル用です (library\filename.member)

1 は CSV ファイルが存在する IFS 内のファイル用です。

デフォルトでは、0 に設定されています。

1 に変更すると、動作するはずです。ただし、FtpWebRequest でどのように変更できるかはわかりません。

于 2009-12-21T17:06:31.233 に答える
0

作業を少し楽にするために、FTP サーバーは、最初のコマンドに基づいて、使用する NameFormat を決定します。「cd /home」で開始すると、FTP サーバーは自動的に NAMEFMT を 1 に設定します。

実際、これはセッション中にリモート FTP コマンド NAMEFMT を使用して手動で変更できます。(古い) iSeries の方法は必要ないことに注意してください。NAMEFMT 1 を使用して、iSeries 上のすべてのオブジェクトをアドレス指定できます。マルチメンバーファイルでも!

于 2009-12-30T19:18:47.700 に答える
0

これは以前に提供されたものからの集計回答ですが、次の構造を使用してこれを機能させることができました。

ftp://[ホスト名]/%2F/[ディレクトリ]/[サブディレクトリ]/[ファイル名].csv

'%2F' は必須であり、ホスト名とパスの間の区切りとして機能します。

于 2017-07-18T21:27:23.060 に答える