【问题标题】:Unable to FTP to MainFrame Location无法 FTP 到大型机位置
【发布时间】:2015-09-07 17:18:37
【问题描述】:

我尝试使用 FtpWebRequest 从大型机位置检索文件。

其他通用服务器一切正常,仅在大型机上出现问题 这是消息

550 Command RETR fails: /'XXX.XXX.XXX.XX.TXT' does not exist.\r\n

我相信我正在创建它的 URI,因此您可以在该消息中看到一个“/”。 这是我的URI = ftp ://data.data.com//'XXX.XXX.XXX.XX.TXT'

【问题讨论】:

  • 这个错误是由您编写的软件程序引起的吗?如果是这样,您能否发布导致问题的相关代码?

标签: .net mainframe ftpwebrequest


【解决方案1】:

FtpWebRequest 类已从 .Net 2.0/3.5 更改为 .Net Framework 4,这与 CWD 协议命令有关。这会阻止在我们实际请求的命令之前使用 CWD 命令。所以我强迫 FTPWebRequest 类表现得像.net 2.0。 这是强制 FtpWebRequest 表现得像 .net 2.0/3.5 的解决方案 https://support.microsoft.com/en-us/kb/2134299

private static void SetMethodRequiresCWD()  
{
Type requestType = typeof(FtpWebRequest);
FieldInfo methodInfoField = requestType.GetField("m_MethodInfo", BindingFlags.NonPublic | BindingFlags.Instance);
        Type methodInfoType = methodInfoField.FieldType;            
FieldInfo knownMethodsField = methodInfoType.GetField("KnownMethodInfo", BindingFlags.Static | BindingFlags.NonPublic);
        Array knownMethodsArray = (Array)knownMethodsField.GetValue(null);

        FieldInfo flagsField = methodInfoType.GetField("Flags", BindingFlags.NonPublic | BindingFlags.Instance);

        int MustChangeWorkingDirectoryToPath = 0x100;
        foreach (object knownMethod in knownMethodsArray)
        {
            int flags = (int)flagsField.GetValue(knownMethod);
            flags |= MustChangeWorkingDirectoryToPath;
            flagsField.SetValue(knownMethod, flags);
        }
}

【讨论】:

  • 希望您已经浏览了共享链接。你可以很容易地找出它不工作的原因。他们提出了一种解决方法。此错误不适用于 RFC 投诉服务器。但我不明白什么是 RFC 投诉。 :(
【解决方案2】:

FTP到主机很复杂。 FTP 可以访问两个并行文件系统,一个由 z/OS 数据集组成,另一个由 USS 文件系统组成。我的猜测是您的 FTP 服务器设置为向您显示 z/OS 文件系统,您需要首先切换到 USS 文件系统才能检索您想要的内容。我怀疑在 get 命令前面加上“cd”命令会解决问题,或者指定完整路径(包括前导 /)也可以。

与您的系统程序员交谈/阅读 CommServer 文档。

【讨论】:

  • 我尝试使用 /,但没有运气,我无法使用 CD,因为我试图通过使用 FTPWebRequest 类的程序来执行此操作。相同的代码适用于 .net 2.0,但不适用于 4.0。
  • 在几篇文章中我发现 FtpWebRequest 类已从 .Net 2.0/3.5 更改为 .Net Framework 4,这与 CWD 协议命令有关。这会阻止之前使用 CWD 命令我们实际请求的命令。所以我强迫 FTPWebRequest 类表现得像.net 2.0。现在它工作正常。谢谢大家的宝贵建议..
猜你喜欢
  • 2015-03-22
  • 2010-10-30
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 2016-02-24
相关资源
最近更新 更多