我有一個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