FtpWebRequest连接到AS/400我需要通过ftp从旧的AS/400服务器下载一些文件。我的代码看起来或多或少像:FtpWebRequest_request=(FtpWebRequest)WebRequest.Create("ftp://ftpaddress/FOO.CSV");_request.Credentials=newNetworkCredential(_ftpUsername,_ftpPassword);_request.Method=WebRequestMethods.Ftp.DownloadFile;FtpWebResponse响应=(FtpWebResponse)_request.GetResponse();但是,该消息引发异常:501对象名称中不允许使用字符(/)。我猜AS400使用与/不同的路径分隔符,但我无法弄清楚如何以(1)FtpWebRequest接受和(2)AS400理解的方式表达uri。还有其他人遇到这个吗?根据此页面,正斜杠是路径分隔符:正斜杠是发送到FTP服务器的路径分隔符。Microsoft论坛(2005)上的类似对话表明它是FtpWebRequest中的错误:CurrentlyFtpWebRequestdoesn'tsupportreferences,我想不出一种方法可以覆盖该方法而不公开我们的代码MariyaAtanasova[NCL]MSFT,主持人,2005年11月尝试更新到最新版本或尝试使用其他库;MS论坛帖子有好几个。我以前经常收到此消息,这意味着我忘记更改名称格式。使用AS400做FTP时,有两种名称格式,可以用FTP命令NAMEFMT改变:0表示库系统文件(libraryfilename.member)1表示IFS中的文件,包含CSV文件默认设置为0。将其更改为1,它应该可以工作。但我不确定如何使用FtpWebRequest更改它。为了让生活更轻松,FTP服务器根据您的第一个命令决定您要使用的名称格式。如果FTP服务器以“cd/home”开头,它会自动将NAMEFMT设置为1。实际上,您可以在使用远程FTP命令NAMEFMT的会话期间手动更改它。请注意,您不需要(旧的)iSeries方式。您可以使用NAMEFMT1寻址iSeries上的每个对象。例如,“get/QSYS.LIB/MYLIBRARY.LIB/MYFILE.FILE/MYMEMBER.MBR”将对任何iSeries数据库表执行此操作。甚至是多成员文件!当我尝试将文件上传到AS400时,我仍然遇到同样的问题,但此页面可能会有所帮助:http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/b4b2e05c-625b-466b-9a11-6173f17187b4/这是之前提供的汇总答案,但我能够通过使用以下结构实现此目的:ftp://[主机名]/%2F/[目录]/[子目录]The.csv'%2F'of/[filename]是必??需的,用作主机名和路径之间的分隔符。以上就是C#学习教程:FtpWebRequest连接AS/400的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
