IIS - 无法通过IP地址访问页面,只能通过本地主机名访问

47


我想要发布一个 ClickOnce 应用并在本地测试。我需要提供安装链接,所以我需要使用 IP 地址更新位置信息,否则我将无法安装它(因为 localhost 会被翻译成计算机名称而无法访问)。问题是,在我的 IIS 上,我只能通过在地址中使用 localhost 来访问我的页面。

http://localhost:9995/publish/Publish.htm <-- working 
http://192.168.1.104:9995/publish/Publish.htm <-- not working (my IP address)
http://my_pc_name:9995/publish/Publish.htm <-- not working
http://127.0.0.1:9995/publish/Publish.htm <-- even that is not working

我正在使用 Windows 7Visual Studio 2012,以及 IIS Express 8.0,但我也尝试在 Visual Studio 2010 上使用相同的方式和 ASP.NET 服务器,但仍然失败。我的防火墙已关闭。

你有任何想法是哪里出了问题吗?


你的网站文件是否位于C:\inetpub\wwwroot路径下? - chamara
9个回答

55

我曾经遇到了和WSUS相同的问题,后来发现是IIS 8.5没有绑定到我的ipv4 IP地址,而是绑定到了ipv6地址。当我通过localhost:8580访问时,它会将其转换为ipv6的本地主机地址,因此可以正常工作。但如果通过IP地址访问则无法连接。我必须使用netsh手动绑定地址,然后它就可以立即正常工作了,这太令人恼火了。

步骤:

  1. 以管理员身份打开命令提示符
  2. 键入以下内容:

netsh http add iplisten ipaddress (YOURSERVER的IPADDRESS)

就是这样。你应该会看到:

IP地址已成功添加

我在这里找到了这些命令 https://serverfault.com/questions/123796/get-iis-7-5-to-listen-on-ipv6


10
正确的命令语法是 netsh http add iplisten xxx.xxx.x.x。请参考此资源:https://support.microsoft.com/zh-cn/kb/954874。 - SaidbakR
3
对于Windows 10,以下格式适用于我:netsh http add iplisten=xxx.xxx.x.x - miradham
1
只是为了感谢你登陆,诅咒微软不默认启用环回地址!啊! - Richard Vanbergen
5
遵循此提示后,当我尝试通过我的IDE启动IIS Express时,会出现错误消息“无法连接到Web服务器'IIS Express'”。 - Black
1
netsh http add iplisten ipaddress=IPADDRESSOFYOURSERVER 对我很有用!谢谢 - Frédéric Fect
显示剩余4条评论

20

也许对某些人有所帮助 :)

我不能发布图片,所以这里是链接到我的博客。抱歉。

使用IP地址访问IIS网页

在 IIS 管理中:选择站点,然后选择 绑定

添加

  • 类型: http
  • 主机名: 空
  • 端口: 80
  • IP地址: 从下拉菜单中选择需要的IP(通常只有一个IP)

对于 Windows Server 2012,您可以在 HostName 和 IP 地址中都输入 *。 - Talha Imam
只显示一个IP地址,但我可以使用自定义的IP地址吗? - SPnL
这是我的问题。尽管我正在使用机器唯一的IP地址,但出于某种原因,同时使用IP和主机会导致它出错。输入通配符IP修复了它。 - Gojira
这解决了我的问题。 - cain
非常感谢。这是我的解决方案,因为需要在本地内部网络中访问服务器。我绑定了“localhost”作为主机名,这导致了问题。我按照您所说的将其更改为空主机名和特定的本地ipv4服务器地址。 - VPetrovic
如何在IIS Express中实现这个? - MohammadHossein R

15

IIS是一种多网站服务器。区分不同的网站的方法是通过主机头名称。因此,您需要在您的网站上设置它。

以下是您需要遵循的步骤:

如何配置多个IIS网站以使用主机标头访问?

通常情况下,打开您的网站属性,查找IP地址,附近有一个高级选项“此网站的多个标识”。在那里,您需要添加所有收入到这个网站,使用星号“*”,或者选择您想要使用的名称。


4
在我的情况下是因为我使用的端口不是默认的80端口。我可以使用"localhost"本地访问该网站,但是在另一台机器上使用IP地址时却无法访问。
解决此问题,我必须添加一个防火墙入站规则来允许该端口通过。 enter image description here

2

检查浏览器代理设置。对我有帮助,流量被引导到了外部。


0
在IIS管理器中,我添加了一个绑定到站点,指定了IP地址。以前,我的所有绑定都是主机名。

0

我试图访问特定端口上的网页并尝试了很多方法,但发现该端口被防火墙过滤了。只需添加一个绕过规则,一切都搞定了。

也许能帮到别人!


0

尝试禁用Windows防火墙,这对我有用,但在我的情况下,我能够通过127.0.0.1访问IIS


-2

请按照以下步骤操作 -

  1. 在 IIS 中右键单击“默认网站”
  2. 单击上下文菜单中的“编辑建筑物”
  3. 选择并编辑
  4. 在 IP 地址中输入您的机器 IP,而不是“*”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接