2015-10-13 46 views
1

我在Windows Server 2008(IIS 7.5)上設置了FTP站點。匿名身份驗證在基本身份驗證不可用時啓用。我添加了允許所有匿名用戶閱讀的規則。在端口21的綁定中,我指定testftp.com作爲主機名。在hosts文件中我添加了行 127.0.0.1 testftp.com。現在,我嘗試以兩種方式訪問​​它:嘗試使用主機名而不是IP訪問IIS時,未登錄(530)

  1. 從Internet Explorer。我收到「此頁面無法顯示」消息。
  2. 從C#代碼:

    string ftpFilePath="ftp://testftp.com/sample.txt"; 
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpFilePath); 
    request.Method = WebRequestMethods.Ftp.DownloadFile; 
    request.Credentials = new NetworkCredential("anonymous", "[email protected]"); 
    

    這樣,我得到(530) Not logged in錯誤。

現在,如果我從綁定和主機文件中刪除主機名並使用IP地址訪問它,我可以毫無問題地讀取文件。有什麼配置我需要考慮讓它工作?

回答

1

我想說你誤會了綁定設置的重點。

這不是將主機名綁定到IP地址。

它將FTP站點綁定到IP地址和主機名(單獨)。


主機名框實際上並不涉及IP地址綁定的。它允許您將多個FTP站點(實例)綁定到相同的IP地址,但允許FTP服務器區分,客戶端希望連接到哪個站點(類似於虛擬HTTP託管)。客戶端需要使用HOST hostname命令進行選擇(類似於HTTP/1.1 Host標頭)。

我相信FtpWebRequest確實使用HOST命令。所以FTP服務器不能告訴你連接到哪個FTP站點,因此認證失敗。

您可以使用特殊的(IIS特定的)用戶名語法"HOST|USERNAME"解決方法。

但正如我在開始時所寫,我相信你實際上並不想限制FTP站點到主機名。

如果清除主機名框,FTP服務器不需要HOST命令。

+0

哈,好點。 –

0

雖然我不確定,但這似乎是那些愚蠢的IIS錯誤之一。我嘗試清除綁定中的主機名,並猜測它是否有效。

相關問題