无法连接到ftp :( 407)需要代理验证

时间:2012-04-05 19:13:07

标签: c# .net ftp

我需要连接到ftp并从中下载文件,但我无法连接到它。我已经指定了凭据,并且能够通过我的浏览器进行连接,但不能通过.NET进行连接。

        FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(ftpSite + "/" + TOC);
        downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile;
        downloadRequest.Credentials = new NetworkCredential(userName, pass);
        FtpWebResponse response = (FtpWebResponse)downloadRequest.GetResponse(); //execption thrown here
        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream);

        reader.ReadLine();

        while (!reader.EndOfStream)
            data.Add(reader.ReadLine());

        reader.Close();

它会抛出WebException的407错误,我不太清楚为什么。我的老板也很困惑。有什么见解吗?

3 个答案:

答案 0 :(得分:1)

您是否尝试使用命令行FTP客户端来执行此操作?

我希望您收到的错误消息已经解释了问题 - 您需要使用代理进行身份验证的应用程序级防火墙。您的浏览器可能已经配置为执行此操作。请咨询您的网络管理员。

答案 1 :(得分:1)

您很可能坐在需要身份验证的FTP代理后面。

尝试初始化

downloadRequest.Proxy

使用适当的代理凭据,例如

之类的东西
WebProxy proxy = new WebProxy("http://proxy:80/", true); 
proxy.Credentials = new NetworkCredential("userId", "password", "Domain"); 
downloadRequest.Proxy = proxy;

答案 2 :(得分:0)

<defaultProxy />元素放在<system.net>下{/ 1}}下的app.config / web.config中可能会有所帮助。根据您的网络设置,这可能会避免您需要在应用程序中对代理帐户详细信息进行硬编码。

useDefaultCredentials="true"