我需要连接到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错误,我不太清楚为什么。我的老板也很困惑。有什么见解吗?
答案 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"