【问题标题】:ftp process won't close (c#)ftp 进程不会关闭 (c#)
【发布时间】:2015-09-10 12:59:25
【问题描述】:

编辑 3:The solution

编辑 2:myProcess.WaitForInputIdle(); 可以帮忙吗?

编辑:我刚刚发现这些文件甚至都没有下载。 我只是忘了删除旧的。请帮忙:/

所以我使用此代码从 ftp 服务器下载文件:

Process p = new Process();
ProcessStartInfo info = new ProcessStartInfo();
info.WindowStyle = ProcessWindowStyle.Hidden;
info.FileName = "ftp.exe";
info.RedirectStandardInput = true;
info.UseShellExecute = false;

p.StartInfo = info;
p.Start();

using (StreamWriter sw = p.StandardInput)
{
   if (sw.BaseStream.CanWrite)
   {
      sw.WriteLine("open " + folder.server);
      sw.WriteLine(folder.cred.user);
      sw.WriteLine(folder.cred.password);
      sw.WriteLine("get " + file);
      sw.WriteLine("close");
      sw.WriteLine("quit");
   }
}

它工作得很好,但最后我得到一个控制台输出,上面写着User (*server*:(none)): Password:,我必须输入一些东西才能继续我的程序。

但是,无论我输入什么都会得到响应:

User anonymous cannot log in.

有人知道我怎样才能避免这种情况吗?

我也尝试过跳过它,但 sw.WriteLine(" ");p.Close() 似乎都不起作用。

我能做什么?

【问题讨论】:

  • 为什么不直接使用Net.FtpWebRequest
  • 不——因为我在这里做的是Net.FtpWebRequest 的解决方法。我必须使用本机 Windows ftp 客户端。我知道这很愚蠢。
  • 我们不能帮助解决最初的问题,或者建议另一个支持您需求的框架吗?处理交互式应用程序不是可行的方法。
  • 或者使用命令文件调用 FTP.EXE
  • 嗯..我尝试的是备份一个“旧的”ZyWall 2 plus,它不会让我使用 FtpWebRequest(500:未知命令/520:命令未实现)。机器分步教程希望我完全按照我的代码现在所做的工作。

标签: c# process cmd ftp


【解决方案1】:

不确定此线程中暗示的这种方法是否可行:

Why I cannot get the output of ftp.exe by code?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
相关资源
最近更新 更多