代码之家  ›  专栏  ›  技术社区  ›  Joel Goodwin

是否可以通过FTP代理使用C#FtpWebRequest?

  •  3
  • Joel Goodwin  · 技术社区  · 14 年前

    据我所知 FtpWebRequest.Proxy

    到目前为止,我唯一能做到这一点的方法是创建一个使用windowsftp命令的脚本,然后以这种方式下载。

    FtpWebRequest 通过FTP代理下载文件?

    5 回复  |  直到 8 年前
        1
  •  1
  •   Dave Hogan    14 年前

    如果你有预算的话-Dart会为这个做一些很棒的课程:

    http://www.dart.com/ 或者具体地说 http://www.dart.com/ptftpnet.aspx

        2
  •  3
  •   davek    12 年前

    这是我以前使用过的代码,我应该提醒一下,我只在检查点防火墙上测试过,所以用户和PASS命令的格式对于FTP代理可能不同。您的系统管理员将知道正确的格式。

    FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(
           new Uri("ftp://FTP PROXY HOST/actual/path/to/file/on/remote/ftp/server"));
    reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
    reqFTP.UseBinary = true;
    
    reqFTP.Credentials = new NetworkCredential
           ("REMOTE FTP USER@FTP PROXY USER@REMOTE FTP HOST"
           , "REMOTE FTP PASSWORD@FTP PROXY PASSWORD");
    
        3
  •  1
  •   davek    12 年前

    我知道这已经过了截止日期,但是是的,我可以通过使用将URL设置为

    "ftp://your.proxy.server/theFileToDownload")" 
    

    username="ftpUserName@ftp.realserver.com" 
    

    password="password". 
    

    我记得在旧温尼特时代做过这种事,有时老把戏仍然是最好的把戏。

        4
  •  1
  •   Martin Prikryl    6 年前

    如果FTP代理允许通过 USER PASS Credentials property

    通常,在表单中指定用户名 user@proxyuser@host 和密码 password@proxypassword :

    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://proxy/path");
    request.Credentials = new NetworkCredential("user@proxyuser@host", "password@proxypassword");
    

    user@host password :

    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://proxy/path");
    request.Credentials = new NetworkCredential("user@host", "password");
    

    • 分离 代理用户和目标主机用户的命令
    • OPEN
    • SITE 命令

    在这些情况下,不能使用 FtpWebRequest

    例如 WinSCP .NET assembly ,您可以使用:

    // Setup session options
    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Ftp,
        HostName = "host",
        UserName = "user",
        Password = "password",
    };
    
    // Configure proxy
    sessionOptions.AddRawSettings("ProxyHost", "proxy");
    sessionOptions.AddRawSettings("FtpProxyLogonType", "2");
    sessionOptions.AddRawSettings("ProxyUsername", "proxyuser");
    sessionOptions.AddRawSettings("ProxyPassword", "proxypassword");
    
    using (Session session = new Session())
    {
        // Connect
        session.Open(sessionOptions);
    
        // Your code
    }
    

    SessionOptions.AddRawSettings ,请参见 raw settings .

    configure the proxy settings in WinSCP GUI 就这样吧 generate C# FTP code template 为你。

        5
  •  -1
  •   csaam    14 年前

    他们声称可以通过代理列出、列出详细信息和下载。但是,我不能让它与isa防火墙一起工作。所以我在我的系统中禁用了默认代理应用程序配置并为ForeFront/ISA客户机添加了一个应用规则。为此,我创建了一个文件c:\programdata\microsoft\firewall client 2004\应用程序.ini内容如下:

    [应用程序名称] 禁用Ex=0 名称分辨率=R

    其中applicationName是正在运行的exe减去.exe扩展名。