为什么我的联网计算机无法从VS2017访问localhost?

时间:2017-07-26 05:19:52

标签: visual-studio webserver

来自XAMPP,使用Apache服务器,我习惯只需在联网计算机上测试我的网站,只需在所需联网计算机的地址栏上输入IPaddressPortNumber即可。

然后在使用VS2017进行开发时,我发现默认情况下不可能。虽然它在localhost中工作正常,但任何联网的计算机都无法访问该网站。我需要访问什么来更改设置,以便我可以将它暴露给端口8012而不是127.0.0.1:8012?

我认为这是问题所在。

1 个答案:

答案 0 :(得分:0)

  

我能够通过更改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成功但不允许端口,则以高级模式打开防火墙
    •   
    • 打开RUN(Windows + R)
    •   
    • 输入firewall.cpl
    •   
    • 点击高级设置
    •   
    • 点击入站规则
    •   
    • 创建新规则
    •   
    • 将所需的端口添加到规则中      
          
      • 端口&gt;特定的本地端口:3940&gt;允许连接&gt;检查所有(域名,私人,公共)&gt;为您的规则命名:ExampleRule&gt;完成
      •   
      • 您可以将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 add urlacl url=http://192.168.10.3:3940/ user=everyone恢复此操作netsh http delete urlacl url=http://192.168.10.3:3940/,因为我在尝试隧道时遇到了502 Bad Gateway错误。
        •   
      •   
    •   
  •   
  • 要记住的事情:      
        
    • 请记住在每次更改后正确重启IISExpress。通常VS会自行完成此操作。只需仔细检查任何正在运行的实例。
    •   
    • 此外,始终在管理模式下运行VS.这通常会清除许多问题,并允许所有子进程(如IISExpress)以提升的权限模式启动,以避免权限错误。
    •   
  •