首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将FTP发送到MainFrame位置

无法将FTP发送到MainFrame位置
EN

Stack Overflow用户
提问于 2015-09-08 01:18:38
回答 2查看 859关注 0票数 0

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

与其他通用服务器配合工作一切正常,只有大型机才会出现问题。下面是消息

代码语言:javascript
复制
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'

EN

回答 2

Stack Overflow用户

发布于 2015-09-23 02:45:47

FtpWebRequest类已经从.Net 2.0/3.5更改为.Net Framework4,这与CWD协议相关,commands.which禁止在我们实际请求的命令之前使用CWD命令。所以我强制FTPWebRequest类表现得像.net 2.0一样。以下是强制FtpWebRequest像.net 2.0/3.5 https://support.microsoft.com/en-us/kb/2134299那样运行的解决方案

代码语言:javascript
复制
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);
        }
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-21 22:50:01

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32443477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档