2009-12-18 39 views
1

我需要通過ftp從舊的AS/400服務器下載一些文件。我的代碼看起來多少有點像:FtpWebRequest連接到AS/400

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理解。

其他人碰到過嗎?

回答

2

this page,FWD斜線路徑分隔符:

正斜槓是發送到FTP服務器的路徑分隔符。

一個similar conversation了微軟的論壇(2005年代)表示它在的FtpWebRequest的錯誤:

目前的FtpWebRequest不支持的報價,我不能想辦法,你就可以在此改變不暴露我們的代碼瑪麗亞Atanasova [NCL] MSFT,主持人,2005年11月

嘗試更新到最新版本或方法嘗試不同的圖書館; MS論壇主題有幾個。

2

我以前經常收到此消息,這意味着我忘記更改名稱格式。

有兩種名稱格式可能與AS400做FTP時,它可以用FTP命令NAMEFMT改變:

0是圖書館系統文件(庫\ filename.member)

1是在IFS,其中一個CSV文件將是

默認情況下的文件,將其設置爲0。

將其更改爲1,它應該工作。但我不確定如何用FtpWebRequest來更改它。

+0

這是最有可能的問題。默認情況下,您正在導航庫和文件。切換到'namefmt 1'導航我猜你的CSV文件所在的IFS。 – 2011-05-09 14:17:34

0

爲了讓生活更輕鬆一點,FTP服務器根據您的第一條命令決定要使用的NameFormat。如果以「cd/home」開頭,則FTP服務器會自動爲您設置NAMEFMT爲1。

事實上,您可以在遠程FTP命令NAMEFMT的會話期間手動更改此項。請注意,您不需要(舊)iSeries方式。您可以使用NAMEFMT 1來處理iSeries上的EVERY對象。例如,「get /QSYS.LIB/MYLIBRARY.LIB/MYFILE.FILE/MYMEMBER.MBR」將爲任何iSeries數據庫表執行訣竅。即使對於多成員文件!