【问题标题】:Why aren't my networked computers able to access localhost from VS2017?为什么我的联网计算机无法从 VS2017 访问 localhost?
【发布时间】:2018-01-01 06:01:13
【问题描述】:

来自 XAMPP,使用 Apache 服务器,我习惯于在联网计算机上测试我的网站,只需在所需联网计算机的地址栏上键入 IPaddress:PortNumber

然后在用VS2017开发的时候,发现默认是不行的。虽然它在 localhost 中运行良好,但任何联网的计算机都无法访问该网站。我需要访问什么来更改设置,以便将其公开到端口 8012 而不是 127.0.0.1:8012 ?

我认为这就是问题所在。

【问题讨论】:

  • 你可以检查防火墙并取消阻止这个端口,以便其他计算机可以访问你的网络服务器

标签: visual-studio webserver


【解决方案1】:

我可以通过更改applicationhost.config 中的绑定值来解决这个问题

  • VS2015 以后,可以在单个项目文件夹%ProjectFolder%/.vs/config/ 中找到它
  • 在 2015 年之前的 VS 中,在%USER%/Documents/IISExpress/config/ 中可用

如果你熟悉XAMPP,设置类似于%XAMPP%/apache/conf/httpd.conf

  • 不同的是,你必须在 IISExpress 中正确绑定端口,而不是设置监听端口号
  • 默认情况下,端口绑定到主机的 localhost。比如说,端口 3940 绑定为*:3940:locahost,这使得它只对运行 VS 的计算机可用。
  • 要使联网计算机可以使用此功能,您需要按如下方式更改此部分:

改变这个:

<bindings>
     <binding protocol="http" bindingInformation="*:3940:localhost" />
</bindings>

到:

<bindings>
     <binding protocol="http" bindingInformation="*:3940:*" />
</bindings>
  • 注意:在某些情况下,bindingInformation="*:3940:" 可以用来代替bindingInformation="*:3940:*"

如果在这一切之后,它仍然不起作用,那么这可能是一个防火墙问题,正如@Mukesh 在他的comment 中指出的那样。

  • 只需 ping 目标设备即可快速发现防火墙问题。
    • 如果ping成功但端口不通,则以高级模式打开防火墙
    • 打开运行(Windows + R)
    • 键入 firewall.cpl
    • 点击高级设置
    • 点击入站规则
    • 创建新规则
    • 将所需端口添加到规则中
      • 端口 > 特定本地端口:3940 > 允许连接 > 检查所有(域、私有、公共) > 为您的规则命名:ExampleRule > 完成
      • 您可以将3940 替换为您想要的端口号或端口范围。也可以选择所有可能的端口。
    • 可选:虽然在客户端计算机上实际上不需要做任何事情,但您可能需要配置防火墙入站规则以接受所有入站连接
    • 如果不是防火墙问题,则可能完全是其他问题。也许您会收到 400 错误页面或 503 错误。以下 SO 问题对我解决这些问题有很大帮助(尽管我后来不得不恢复 ACL 津贴)。我希望这对将来的某人有用
      • IIS Express Configuration
      • Change binding, ACL and Port forwarding
      • HTTP 400 Bad Request Error
        • 这个^的解决方案是here
      • 503 Service Unavailable Error
        • 有时只需在applicationhost.config 中创建绑定条目即可解决此问题
        • 其他时候,它的重复绑定问题。并且您需要在这些时间删除绑定条目。如果您在项目文件夹中编辑applicationhost.config,则可以只保留一个站点和绑定信息。
        • 对于我的特殊情况,我不得不用这个netsh http delete urlacl url=http://192.168.10.3:3940/ 恢复这个操作netsh http add urlacl url=http://192.168.10.3:3940/ user=everyone,因为我在尝试隧道时不断收到 502 Bad Gateway 错误。
  • 要记住的事情:
    • 请记住每次更改后正确重启 IISExpress。通常 VS 会自行执行此操作。只需仔细检查是否有任何正在运行的实例。
    • 另外,请始终在管理模式下运行 VS。这通常可以解决很多问题,也可以让所有子进程,例如 IISExpress 以提升的权限模式启动,以避免权限错误。

【讨论】:

    猜你喜欢
    • 2015-08-19
    • 2018-08-21
    • 1970-01-01
    • 2020-08-24
    • 2011-01-07
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多