无法启动 IIS Express Web 服务器错误。

58
当我在Visual Studio中尝试使用一个配置了监听地址为本地地址以外的项目启动IIS Express时,我会收到这个错误。Visual Studio会在冻结约30秒后显示“无法启动IIS Express Web服务器”的错误。
我尝试了所有类似问题发布的解决方案,而且我认为我已经做过一切正确的事情了。以下是我所采取的步骤:
1. 添加以下预留到HTTP.SYS:
netsh http add urlacl url=http://+:36899/ user=Everyone 2. 以管理员身份运行Visual Studio 2012。(实际上我认为我不需要这样做,因为我已经手动设置了HTTP.SYS)。
3. 禁用Windows防火墙。
4. 删除我的文档文件夹中的IISExpress文件夹,以确保默认设置。
5. 允许Visual Studio在applicationhost.config中创建我的Web项目条目。然后手动编辑配置文件,将localhost更改为我的本地IP地址192.168.0.100。然后返回Visual Studio中的项目属性,将localhost更改为该IP地址,并保存项目,使我的项目现在设置为http://192.168.0.100:36899。
我还尝试更改端口并重复上述步骤,以防端口由于某种原因正在使用中。
我希望能够通过互联网使我的IIS Express开发人员实例可从我的IP访问以进行远程测试。

1
创建一个虚拟目录解决了我的问题。 - Zameer Ansari
27个回答

63

如果使用VS2015,请关闭解决方案,删除以下文件,然后重新打开解决方案。

<<path_to_solution_folder>>\.vs\config\applicationhost.config

请注意,.vs文件夹可能是隐藏的。


这个方法非常有效,比其他答案建议的搞乱(或清除)你的IISExpress配置要好得多。 - Daniel Liuzzi
1
让我补充一些隐性的内容。在打开/加载解决方案之前,请先删除该文件。 - Luis Lavieri
@Luis 的观点是正确的。在删除 applicationhost.config 文件之前,必须先关闭解决方案。 - Ibrahim Dauda
那些找不到文件夹的人,可以启用隐藏文件夹显示选项,之后它就会显示出来。 - Anirudha Gupta
很不幸,在我的项目中没有.vs文件夹(甚至没有隐藏文件夹)...我用的是VS2012。还有其他解决方案吗??? - Ahsan Arshad
这个和即将到来的“更新和重启”实际上让我崩溃了。再次点赞!谢谢。 - Alex Sorokoletov

51

对我来说唯一有效的解决方法是在applicationhost.config文件中为我的站点的<bindings>部分使用以下行:

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

关键在于简单地删除localhost。不要用星号替换它,也不要用IP或计算机名称替换它。在冒号后面留空即可。

这样做后,我就不需要以管理员身份运行Visual Studio,可以自由地在项目属性中更改项目网址为本地IP或计算机名。然后设置端口转发,就可以访问Internet了。

编辑:

我发现了一个重要的问题,可以让IIS Express正确地处理外部请求。

  1. 如果您正在以管理员身份运行Visual Studio/IIS Express,则不能使用"netsh http add urlacl ..."命令向HTTP.SYS添加保留。这样做会导致HTTP 503服务不可用错误。请删除任何已在URLACL中进行的预留操作,以修复此问题。

  2. 如果您没有以管理员身份运行Visual Studio/IIS Express,则必须向URLACL中添加保留。


3
很好的建议!在我的情况下,这也很有帮助:http://blogs.msdn.com/b/finbar_ryan/archive/2013/01/02/debugging-the-unable-to-launch-the-iis-express-web-server-error-from-visual-studio-2012.aspx - deerchao
对我来说有效,但只有在我重新启动了Visual Studio之后。 - Richard Fawcett
3
Trevor,你救了我的命。我差点放弃编程成为一名农民。虽然花了我很长时间来解决问题,但“冒号后空白”技巧确实挽救了我。 还有一件事,对我来说,我仍然需要添加URLACL预留,否则我会收到“无法为站点“SITE NAME”应用程序“/”注册URL“http:// *:62940 /”。错误描述:拒绝访问(0x80070005)。”必须将它添加到ACL列表中。谢天谢地现在它工作了。 - skhro87
2
当你更改IIS Express时,你需要以管理员模式运行Visual Studio。如果不这样做,IIS Express将无法启动。 - Stefanvds
这个可以运行,但是当我的项目URL指向除localhost以外的不同主机名时加载项目会失败。我在这里提供了一些说明来实现 https://gist.github.com/sydcanem/30c16b414bc47694d2ce。 - James
有人能指导我如何使用NetSh命令查找最近添加的内容吗?我在阅读其他SO帖子时运行了几个netsh命令,但找不到链接。现在我只能在vs2019中以非管理员身份运行。谢谢。 - Eric Brown - Cal

31

我曾经遇到完全相同的问题。尝试了一切,但最终有一个小技巧起了作用。

  1. 从“我的文档”中删除IISExpress文件夹
  2. 重新加载您的项目,它将使用更新后的配置再次创建IISExpress文件夹
  3. 检查IISExpress文件夹是否具有足够的读写权限来读写配置文件
  4. 再次加载项目并运行IISExpress。应该可以工作了。

这对我有用!我的“My Document”目录位于我们的文件共享上,因此当我从旧电脑切换到新电脑时,我的VS项目加载得很好,但是当我尝试运行应用程序时,出现了通用的“无法启动IIS Express Web服务器”的错误。删除并重新运行项目解决了我的问题。 - ewitkows
没有完全相同的错误,但与IIS相关的功能(创建新的MVC项目,启动网站等)一直报错。我在文档下有一个之前系统安装中的IISExpress文件夹,其中同时安装了VS和WebMatrix。删除整个文件夹似乎解决了所有问题。VS创建了一个全新的IISExpress文件夹。 - Protongun
不是我的问题。到目前为止,唯一的解决方案就是重新启动机器。 - Patrick Borkowicz
VS2013,同样的问题。只有步骤#1解决了我的问题! - Vin
谢谢。只有这个修复解决了我的问题。微软的bug一如既往地充满了他们核心中不该有的人。 - vibs2006
谢谢伙计。在苦苦挣扎了将近两个小时后,这终于起作用了。请确保为安全起见备份IISExpress文件夹。 - Shantilal Suthar

14
  1. 关闭您的项目。
  2. 转到文件夹设置并选择显示隐藏文件选项。
  3. 打开应用程序所在的文件夹。 您将看到一个 .vs 文件夹。
  4. 打开 .vs 文件夹,您会看到其中一个 config 文件夹。 删除它的内容。
  5. 以管理员模式运行 Visual Studio。 从 文件 菜单中打开您的解决方案。
  6. 清理您的解决方案。
  7. 构建它。
  8. 运行它,完成!

我不建议删除IIS Express文件夹或更改其中的配置文件。


工作正常。谢谢 :) - Thulasiram

10

我正在更改这个条目(在这个条目中,我的网络服务器停止运行,并且对于特定端口显示了访问被拒绝的错误)。

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

在"Documents\IISExpress\config"中的"applicationhost.config"文件中,特定的Web应用程序每次启动时都被Visual Studio 2012覆盖为默认端口。

但我通过不对applicationhost.config进行任何更改来解决了这个问题。我只是将“项目属性”>“Web”>“项目URL”设置从http://localhost:62135/更改为http://localhost:47279/(取决于您的计算机),这对我有效。


7

请尝试以下步骤:

  1. 打开解决方案的属性
  2. 进入 Web 选项卡
  3. 在本地 IIS 下,将端口号更改为任意其他端口号,并创建新的虚拟目录。

这对我很有帮助!修改/删除applicationhost.config没有起作用,但简单更改端口就可以了。注意:只有在运行“启动而不调试(CTRL + F5)”时才会遇到此问题。 - Lars Peter Larsen

6

只需以管理员身份启动您的Visual Studio即可。

谢谢,


5
从 applicationhost.config 文件中删除不必要的站点条目解决了我的问题。

5

我有同样的问题,但是原因不同,可能可以帮助其他人。

使用管理员模式下的命令提示符: - 输入:netsh http show iplisten 如果有任何IP条目: - 输入:netsh http delete iplisten 重复以上步骤直到列表为空。检查IIS Express是否启动。

希望这可以帮助, Niels


我已经为此苦苦挣扎了15个小时。最终这解决了我的问题。非常感谢!!! - NAS

4
对我来说,解决问题的方法是在项目解决方案文件夹中的.vs文件夹中的applicationhost.config文件中。请注意,默认情况下.vs文件夹是隐藏的。因此,我关闭了项目并删除了.vs文件夹(当您重新打开项目时,vs会再次创建它),然后重新打开项目并运行它。

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