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

我试图testing我的本地networking上的一些其他机器/设备在本地IISExpress实例中运行的网站。 我正在运行Win7 Pro。

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

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

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

现在我得到一个503服务不可用的错误。

Windows防火墙目前closures,我可以浏览我的本地IISExpress实例的地址http://localhost:50333

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

看起来您在applicationhost.config文件中缺less绑定信息条目。

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

    • %userprofile%\Documents\IISExpress\config\applicationhost.config
    • $(solutionDir)\.vs\config\applicationhost.config (VS2015)
    • 如果没有,请检查iisexpress.exe的输出以确保。
  2. find您的网站条目,并添加以下绑定与您的机器名称。

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

只有一件事情为我工作。

使用*:portnumber:*是不好的。 是的,这样做后,确保Windows防火墙已打开,我可以连接到端口,但我仍然有“503”错误。

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

最后,我结束了使用这个configuration:

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

这样,我就可以使用http://192.168.1.50:53351从远程机器进行连接。

在这样一个完整的主题上浪费了3个多小时后,我决定和你分享我的设置。 我的configuration是在Windows 8上的Web更新4的Visual Express 2012年。这是我第一次回到MS VS自研究(至less8年),现在我相信,Linux的规则。 在Django这种设置花了我10分钟的search文档。

  1. closures防火墙进行testing

     netsh advfirewall set allprofiles state off 
  2. 设置绑定在我的情况下本地地址是本地IP = 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 

如果你想访问本地networking使用localsubnet,如果你想访问你的服务器从外部世界设置remoteip任何

  1. 启动防火墙

     netsh advfirewall set allprofiles state on 
  2. 再次检查是否一切正在本地和公共IP

祝你好运

拉法尔

没有为我工作。 最后我find了iisexpress-proxy

看到我的回答https://stackoverflow.com/a/33623399/631527

发现问题必须做一个坏的urlacl映射。 为了解决这个问题:

 netsh http show urlacl 

并查找诸如http://+:80/或绑定的端口。

然后使用

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

这为我解决了这个问题。

什么帮助我,是右键单击“IISExpress”图标,“显示所有应用程序”。 然后select网站,我看到了它使用的aplicationhost.config,并更正完美。

IISExpress配置

问题是更新web文件夹内的applicationhost.config文件,而不是解决scheme的。 解决schemeconfiguration文件是要更改的