使用 FtpWebRequest 附加到大型机上的文件时出现问题

Posted

技术标签:

【中文标题】使用 FtpWebRequest 附加到大型机上的文件时出现问题【英文标题】:Problem using FtpWebRequest to append to file on a mainframe 【发布时间】:2010-04-16 01:04:54 【问题描述】:

我正在使用FtpWebRequest 将数据附加到大型机文件。附加的每条记录有 50 个字符长,我一次添加一条记录。

在我们的开发环境中,我们没有大型机,所以我的代码是编写和测试的 FTP 到基于 Windows 的 FTP 站点而不是大型机。最初,我使用StreamWriter(使用来自FtpWebRequest 的流)写入每条记录,并使用WriteLine(自动在末尾添加CR/LF)写入每条记录。

当我们第一次在测试环境中运行此程序时(我们正在写入实际的 MVS 大型机),我们的大型机联系人说他的程序无法读取 CR/LF(绿色-某种屏幕大型机程序——他给我发了屏幕截图,这就是我所知道的)。

我将我们的代码更改为使用Write而不是WriteLine,但是现在我的代码在写入多条记录时执行成功(即没有抛出异常),但是无论我们追加多少条记录,他都只能“见“第一条记录——根据他的主机程序,文件里只有一条50字符的记录。

我猜要解决这个问题,我需要在流的末尾(而不是 CR/LF)写入一些其他的行分隔字符,以便大型机将其识别为记录分隔符。有谁知道这是什么问题,或者我还能如何解决这个问题?

【问题讨论】:

【参考方案1】:

我实际上遇到了完全相同的问题,我只使用 LF 作为分隔符来解决它。

另外,顺便说一句,为了发送文件,我最终编写了一个命令行脚本并将其发送到 DOS ftp 实用程序,因为内置的 .NET FTP 类不能很好地与大型机格式化命令和奇怪的“目录”结构。

【讨论】:

我已经经历了一些痛苦已经走到了这一步。我已经遇到过 MVS 目录结构问题 - 幸运的是,我们的目标最终变成了像“ggg.ddd.com//'FILE.EXT'”这样简单的东西(带有额外的正斜杠和单引号)。 听起来像添加 LF 而不是 CR/LF 可能会解决我们的问题。他们说记录长度是50个字符。你认为这意味着我应该附加 51 个字符(50 + LF),还是应该 LF 是第 50 个字符? 内置类对命令格式有什么影响?我之所以问,是因为如果修复此线路问题只是暴露了另一个问题,我不会感到惊讶。我无法直接访问此服务器 - 我有一个 webex 给那里的某个人,他会按照我通过电话告诉他的操作。 另外,您最终是否不得不使用 NEL (0x15) 而不是 LF (0x10)?这个特定的大型机使用 EBCDIC,它显然使用 NEL。 好吧,我最终尝试了所有我能想到的方法来完成这项工作,唯一有效的方法是将 CR/LF 放在每行的末尾。这正是我最初所做的。我不知道为什么它最初似乎对他不起作用。

以上是关于使用 FtpWebRequest 附加到大型机上的文件时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

无法 FTP 到大型机位置

连接大型机上的 UNIX 文件

FtpWebRequest 使用显式 TLS/SSL

如何使用 javascript/jquery 将大型 html 块附加到刀片文件?

我们如何在大型机上开发应用程序以在没有 DB2/z 的情况下访问 DB2/LUW?

如何在不使用 PHP 加载整个内容的情况下附加到大型 XML(文件)