我尝试从大型机位置检索文件..使用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'
发布于 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那样运行的解决方案
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);
}
}发布于 2015-09-21 22:50:01
FTP到大型机是很复杂的。FTP可以访问两个并行文件系统,一个由z/OS数据集组成,另一个由USS文件系统组成。我的猜测是,您的FTP服务器设置为向您显示z/OS文件系统,您需要首先切换到USS文件系统,以便检索您想要的内容。我怀疑在get命令前面加上'cd‘命令就可以解决问题,或者指定完整路径,包括前导/,也可以。
与您的系统程序员交谈/阅读CommServer文档。
https://stackoverflow.com/questions/32443477
复制相似问题