我使用 IIS7.5 设置了多个 FTP 站点。这些站点使用主机名来区分它们。使用主机名的一个缺点是您必须将 FTP 站点的地址传递到用户名中,例如
Ftp 地址:ftp://ftp.example.com
用户名:ftp.example.com|用户1
密码:psswrd
我至少希望将用户名作为连接地址的一部分传递,例如ftp://ftp.example.com|[电子邮件保护]但我无法使用 Windows 资源管理器(在 Windows 7 中)执行此操作。每当我尝试此技术时,系统仍会提示我输入用户名和密码。
我已经设置了使用域名作为主机名=True在服务器上允许用户名有更多灵活性,但我仍然无法让它工作。两者都不行ftp://ftp.example.com%[电子邮件保护]/或者ftp://用户1%[电子邮件保护]/似乎在 IE9 和 Chrome 中没有什么区别。
我哪里做错了?
答案1
当涉及到 FTP 服务器的新虚拟主机名时,使用 IIS 7.5 有点令人生畏。但是,即使您似乎已经正确配置了 IIS 7.5 服务器,IE、Chrome 和其他浏览器也不知道如何以 IIS 7.5 可以处理的方式处理这些类型的虚拟主机请求。
目前唯一可行的解决方法是执行以下操作:
Internet Explorer、Windows Explorer 和虚拟 FTP 站点问题
Internet Explorer 和 Windows Explorer 都首先尝试匿名连接到 FTP 服务器。如果失败,则它们会提示输入凭据。当 FTP 7 仅配置基于虚拟主机名的站点时,这些客户端会失败。服务器将拒绝匿名登录,就 FTP 规范 (RFC 959) 而言这是有效的,尽管如此,它还是会混淆这些客户端的身份验证顺序。Robert McMurray 很久以前就注意到了这个问题,并在以下博客中提出了一个简单的解决方法 http://blogs.msdn.com/robert_mcmurray/archive/2008/12/17/ftp-clients-part-3-creating-a-global-listener-ftp-site.aspx。
要解决该问题,您需要创建一个 GlobalListenerFtpSite,该站点未配置主机名。它必须拒绝匿名访问。事实上,您不应该允许任何访问该站点(将授权部分留空)。此站点将以对 IE 和 Windows Explore 友好的方式拒绝匿名登录。然后一切都将按预期工作。Robert 的博客文章将提供有关该主题的更多信息。
您可以从以下文章和文章中找到更深入的信息: 解决虚拟 FTP 站点(FTP 7.5)的“|”分隔符问题。
答案2
我不太明白真正的错误是什么。
您应该使用 进行连接。您认为需要在用户名中传递域名这一事实对我来说毫无意义。ftp://username:[email protected]
但在您的示例中,您|
在用户名中使用了 ,而您的浏览器会尝试将其更改为 %
。我认为您应该检查错误日志并重新进行操作。
答案3
仅传递用户名不会按您想要的方式工作,即之后只需输入密码。当您发送 URL 为
服务器将尝试在不使用密码的情况下验证您的身份,但由于验证失败,服务器将再次要求输入用户名和密码。因此,您必须在出现的对话框中再次输入它们。
我在 Chrome 中试过。用户名在 ping 服务器之前就从 URL 中被删除了。Firefox 甚至无法加载页面,而 Opera 使用其内置的 FTP 管理器,提示身份验证失败并要求输入用户名和密码。
答案4
理想情况下,您正在寻找的格式是ftp://user@website
。
但是,使用这种地址的结果取决于客户端浏览器,而不是 Web 服务器。
Firefox 将完全按照您的要求执行操作,仅提示输入密码。Internet
Explorer 将忽略指定的用户并要求输入密码。