0

我需要连接到一个 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();

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

4

3 回答 3

1

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

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

于 2012-04-05T19:19:22.930 回答
1

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

尝试初始化

downloadRequest.Proxy

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

WebProxy proxy = new WebProxy("http://proxy:80/", true); 
proxy.Credentials = new NetworkCredential("userId", "password", "Domain"); 
downloadRequest.Proxy = proxy;
于 2012-04-05T19:20:01.747 回答
0

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

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <defaultProxy useDefaultCredentials="true" />
  </system.net>
</configuration>
于 2012-08-02T23:09:54.907 回答