IISExpress从远程计算机返回503错误

时间:2011-03-26 13:20:40

标签: iis-express

我正在尝试使用本地网络上的其他一些机器/设备测试我在本地IISExpress实例中运行的网站。我正在运行Win7 Pro。

当我第一次尝试从本地网段上的另一台计算机浏览到我的计算机时,出现400错误:主机名无效。

据我所知,我需要在提升的命令提示符下使用命令授予对ACL的远程访问权限,如:

netsh http add urlacl url=http://mymachinename:50333/ user=everyone

现在我收到503服务不可用错误。

Windows防火墙目前已关闭,我可以使用地址http://localhost:50333

浏览我的本地IISExpress实例

这个配置难题的最后一块是什么?

10 个答案:

答案 0 :(得分:259)

您似乎缺少applicationhost.config文件中的绑定信息条目。

  1. 打开applicationhost.config文件。可能的位置是:

    • %userprofile%\Documents\IISExpress\config\applicationhost.config
    • $(solutionDir)\.vs\config\applicationhost.config(VS2015)
    • 如果失败,请检查iisexpress.exe的输出以确定。
  2. 使用您的计算机名称找到您的网站条目和添加

         <binding protocol="http" bindingInformation=":50333:your-machine-name" />
    
  3. 重新启动IIS Express

答案 1 :(得分:26)

只有一件事对我有用。

使用*:portnumber:*并不好。是的,在这样做并确保Windows防火墙打开后,我可以连接到端口,但我仍然得到了&#34; 503&#34;错误。

我在本地测试了一些东西,发现只有http://localhost有效。使用真实IP地址(不是127.0.0.1,但是,例如,192.168.1.50),仍然在本地计算机上返回503。我尝试在绑定中使用真实主机名,但IIS Express拒绝启动。这实际上可能与主机名的解析方式有关。我没有进一步探索。

最后,我最终使用了这个配置:

<binding protocol="http" bindingInformation="*:53351:localhost" />
<binding protocol="http" bindingInformation="192.168.1.50:53351:*" />

通过这种方式,我可以使用http://192.168.1.50:53351从远程计算机进行连接。

答案 2 :(得分:18)

在这样一个完整的主题上浪费了超过3小时后,我决定与你分享我的设置。 我的配置是Windows 8上的Visual Express 2012 for Web update 4.这是我第一次回到MS VS自学习(至少8年),现在我确信linux规则。在django上,这种设置花了我10分钟的搜索文档。

  1. 关闭防火墙进行测试

    netsh advfirewall set allprofiles state off
    
  2. 在我的案例中设置绑定本地地址是localIP = 192.168.1.102(因为链接不能包含非数字域,请使用下面的代替mylocaldomain.com,请参阅stackoverflow策略) 在Documents\IISExpress\config\applicationhost.config

    <bindings>
        <binding protocol="http" bindingInformation="*:53351:mylocaldomain.com" />
        <binding protocol="http" bindingInformation="*:53351:localhost" />
    </bindings>
    
  3. 自动为ISS Express启动服务添加自动运行

    <site name="NeuronCharts" id="2" serverAutoStart="true">
    
  4. 向http服务器添加一些奇怪的规则(我仍然不知道这是否是nesseary)

    netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
    
  5. 不是从VS IDE手动运行IISExpress

  6. 您将看到ISSExpress正在注册绑定
  7. 运行浏览器http://mylocaldomain.com:53351 如果它正在工作,那么我们可以添加防火墙规则
  8. 添加防火墙规则

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
    
  9. 如果您想要访问本地网络,请将remoteip设置为any,如果您想访问本地网络使用localsubnet

    1. 启动防火墙

      netsh advfirewall set allprofiles state on
      
    2. 再次检查是否所有内容都在本地和公共IP上运行

    3. 祝你好运

      拉​​法尔

答案 3 :(得分:6)

发现问题与坏的urlacl映射有关。想一想:

netsh http show urlacl 

并查找http://+:80/或您绑定的端口等内容。

然后使用

netsh http delete url=<the url from the list>

这解决了我的问题。

答案 4 :(得分:5)

对我来说没有任何作用。最后我找到了iisexpress-proxy

请参阅我的回答https://stackoverflow.com/a/33623399/631527

另一个解决方案是ngrok

答案 5 :(得分:2)

帮助我的是,右击“IISExpress”图标,“显示所有应用程序”。然后选择网站,我看到它使用了哪个aplicationhost.config,并且纠正完美。

IISExpress configuration

答案 6 :(得分:1)

问题是更新web文件夹中的applicationhost.config文件而不是解决方案。解决方案配置文件是要更改的文件

答案 7 :(得分:0)

关于Anthony Rizzolo的回答:在Windows 8.1中,我必须这样打字:

netsh http delete urlacl url=<the url from the list>

例如:

netsh http delete urlacl url=http://+:8689/

答案 8 :(得分:0)

以上所有答案对我都没有作用。

我在netsh中有两个条目用于同一服务

netsh http show urlacl

enter image description here

一个使用强通配符,另一个使用弱通配符。

删除通配符较弱的那个就可以了。

有关netsh上下文中强弱通配符的更多信息

  

当UrlPrefix的host元素由单个加号组成时   (+),UrlPrefix在以下情况下匹配所有可能的主机名:   它的方案,端口和relativeURI元素,并且属于强   通配符类别。

     

当星号(*)作为主机元素出现时,则UrlPrefix   属于弱通配符类别。这种UrlPrefix匹配   与指定方案,端口和关联的任何主机名   还没有强通配符匹配的relativeURI,   显式或IP绑定的弱通配符UrlPrefix。该主机规范   在某些情况下可以用作默认的包罗万象,或者可以   用于指定URL名称空间的很大一部分,而不必使用   许多UrlPrefixes。

https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings

答案 9 :(得分:0)

在解决@vikomall之后,请不要忘记以管理员身份启动VS。 这为我解决了。