我有一个MVC应用程序,并试图访问我在IIS中设置的本地主机ftp服务器 - 最终它将访问其他ftp服务器,但我只想在本地尝试。我使用FtpWebRequest编写了一个c#函数,但是当我调用GetResponse()时,它会返回错误:“远程服务器返回错误:(530)Not logged in。”不确定如何以匿名或非匿名用户身份登录。如果我在IIS中有一个名为“MyFTPSite”的FTP站点并启用了匿名身份验证,那么URL字符串的格式是否正确?网络创新应该是什么? Files目录是ftproot的子项 - 我需要为Files文件夹添加一个虚拟目录吗?现在,ftp站点的物理路径被设置为C:\ inetpub \ ftproot。 (在下面的代码中,localhost故意拼写错误的b/c该网站不希望我使用本地主机url)。通过.Net访问本地主机FTP服务器
public override bool DownloadFile()
{
string fileName = System.IO.Path.GetFileName(this.UrlString);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(this.UrlString);
request.Method = WebRequestMethods.Ftp.DownloadFile;
//anonymous logon
request.Credentials = new NetworkCredential("anonymous", "<my email>");
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
return true;
}
FTPDownload download = new FTPDownload(@"ftp://lclhost/MyFTPSite/Files/w4.pdf");
download.DownloadFile();
不会ftpHost必须包含我给FTP站点的名称,比如ftp://localhost/MyFTPSite/test.txt?通过你的步骤,仍然有相同的错误。我做了第7步中的事情,但还没有为IUSR做过。 – Kelly 2014-09-05 16:37:38
嗨凯利,这是正确的 - 在我的例子中,我在默认的IIS FTP根目录上运行一个FTP站点,所以不需要子目录('ftp:// localhost'直接映射到文件目录)。关键是你需要站点/文件的完整路径是正确的。一种快速测试路径和不安装的方法:打开FireFox或Chrome,然后尝试浏览到您的FTP根目录。如果它允许你进入,那么你知道路径是正确的,并且anon安全性已正确打开。在您的代码中,尝试在您的网络浏览器中验证确切路径后进行硬编码。在调试器中逐步完成,并报告您看到的任何前端。 – 2014-09-05 17:08:18
此外,这是代码中的一个不同于我们正在讨论的范围,但由于代码示例中的倒数第二行有一个指定** lclhost **(而不是“localhost”)的文字路径,所以上面的hard在创建'FtpWebRequest'时编码一个已知工作路径(在浏览器中验证)将消除路径的变量成为问题。 – 2014-09-05 19:36:15