获取(530)未尝试使用主机名而不是IP访问IIS时登录

时间:2015-10-13 10:55:23

标签: iis ftp iis-7.5

我在Windows Server 2008(IIS 7.5)上设置了一个FTP站点。启用匿名身份验证,而不启用基本身份验证。我添加了一个规则,允许所有匿名用户阅读。在端口21的绑定中,我已将testftp.com指定为主机名。在hosts文件中我添加了一行 127.0.0.1 testftp.com。现在,我尝试以两种方式访问​​它:

  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", "password@testftp.com");
    

    这样我就会出现(530) Not logged in错误。

  3. 现在,如果我从绑定和主机文件中删除主机名并使用IP地址访问它,我可以毫无问题地读取文件。是否有任何配置需要考虑才能使其正常工作?

2 个答案:

答案 0 :(得分: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命令。

答案 1 :(得分:0)

虽然我不确定,但这似乎是那些愚蠢的IIS漏洞之一。我尝试在绑定中清除主机名并猜测它是什么,它有效。