无法启动IIS Express Web服务器

356

我有一个ASP.NET MVC 4的解决方案。当我尝试使用Visual Studio 2012打开它时,我会收到以下错误:

Microsoft Visual Studio

为ASP.NET 4.5配置Web https://localhost:失败。您必须手动为此站点配置ASP.NET 4.5,以便站点可以正确运行。无法在本地计算机上找到服务器 https://localhost:44300/ 。请确保已经配置本地IIS服务器以支持安全通信。

虽然解决方案已经打开。但是,当我尝试从调试菜单中运行它时,我会收到以下错误:

无法启动IIS Express Web服务器。

指定的启动URL无效。https://localhost:44300/

我无法调试代码。如何消除这些错误并从VS 2012调试/运行网站?


4
错误信息表明问题很明显:1)“你必须手动配置此站点以使ASP.NET 4.5正常运行。”和2)“指定的起始URL无效。”另外,你似乎正在使用HTTPS;据我所知,IIS Express不支持它(如果支持,您可能需要进行配置,因此需要“确保本地IIS服务器已被配置为支持安全通信”部分)。编辑:看起来它确实支持SSL:http://riii.nl/apr5u,这是Hanselman本人提供的逐步指南! - RobIII
看起来你需要进行一些配置,因为你似乎正在使用SSL;这里有Scott Hanselman本人的逐步指南 - RobIII
1
@Robel,我看到在站点的属性中,在应用程序选项卡下,目标框架是4.5,在Web选项卡下,启动操作是当前页面。我应该将项目URL更改为http://localhost:44300/吗?我正在使用IIS Express 8。 - DotnetSparrow
54个回答

442

我遇到了完全相同的问题。
原因是IIS配置文件错误。

尝试删除自动生成的IISExpress文件夹,通常位于%userprofile%/Documents,例如C:\Users\[you]\Documents\IISExpress

不用担心,一旦您再次运行解决方案,VS会再次正确地创建它。


编辑:删除文件夹的命令行:

rmdir /s /q "%userprofile%\Documents\IISExpress"

7
这对我很有用。即使我卸载并重新安装了IIS Express 8,它仍然保留着相同的配置文件,因此我的问题仍然存在。我将IISExpress文件夹重命名为其他名称,然后创建了一个新文件夹,其中包含一个干净版本的配置文件。 - nthpixel
62
谢谢。只是不要忘记关闭然后重新打开VS以重新配置IIS Express。 - Nick.T
2
我尝试了那个方法,但对我没有用。然后我重启了电脑,现在一切都正常了。 - Prageeth godage
9
@crokusek有关于VS2015 Update 3的答案。在解决方案目录中导航到“.vs\config”文件夹并删除那里的“applicationhost.config”文件。 - AJ.
5
请尝试删除项目中的 .vs 文件夹。如果在这样做并重新启动计算机后仍然无效,请再试一次。 - sknight
显示剩余10条评论

250

如果使用VS2015或以上版本

确保iisexpress进程未运行。

确保没有其他进程正在使用您所需的端口。您可以通过在控制台中执行以下命令来实现:

netstat -a -b

(在开始菜单中键入cmd,右键单击并选择“以管理员身份运行”)。如果您看到一个状态为ESTABLISHED或LISTENING的条目,则表示某个其他进程正在使用此端口。您需要终止该进程或更改端口。

然后删除以下文件

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

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

然后找到<<project-name>>.csproj.user文件,用文本编辑器(如记事本)打开它,并确保在WebProjectPropertiesIISUrl配置为<IISUrl>http://localhost:XXXXX/</IISUrl>,其中XXXXX是您所需的端口号。

完成此操作并尝试启动应用程序后,您可能会收到以下提示:

HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.

然后转到 {项目属性} -> Web 并按下 "创建虚拟目录" 按钮

enter image description here


4
请查看这个链接:http://www.iis.net/learn/get-started/planning-your-iis-architecture/introduction-to-applicationhostconfig。删除.config文件可以确保该文件将被VS重新创建,因此与之相关的任何问题(可能有很多)都会消失。这个文件被IIS Express使用,就像IIS使用它自己的applicationhost.config文件一样,所以它相当于恢复出厂设置。仅创建虚拟目录是不足以消除文件中可能隐藏的任何问题的。在你的情况下,你很幸运 :) - Mihail Shishkov
在VS2015中,删除.vs/config目录下的applicationhost.config文件可以解决问题。 - ram
在删除配置文件时,请确保 iisexpress 实际上没有运行。 - Mihail Shishkov
我将一个解决方案结构(整个文件夹)复制到新机器上,但无法使用IIS Express进行调试。在看到这一点后,我删除了.vs文件夹,问题得到了解决。可能是因为先前的配置指向了一个无效的位置,因为先前的解决方案位于D:驱动器上,而新的解决方案位于C:上。 - Eben Roux
你能否提供一个演示或清晰的解释,因为您提到可以通过在控制台中执行netstat -a -b来实现。 - Meena
显示剩余3条评论

84

@roblll说得对。但是对于那些不想要去找答案的人,这里就是解决方案:

  1. 关闭Visual Studio(可能没有必要,但也不会有害)。
  2. 导航到您的“文档”文件夹。这就是我的IISExpress配置目录所在的位置。
  3. 在配置文件夹中,有一个名为“application host”的文件。打开它。
  4. 搜索您的项目名称。当Visual Studio在您之前的尝试中发生故障时,应该已经添加了它。
  5. 请注意,有一个绑定HTTP的端口,您打算用它进行https。

  6. //Change this:
    <binding protocol="http" bindingInformation="*:44300:localhost" />
    
    //to this:
    <binding protocol="https" bindingInformation="*:44300:localhost" />
    

请记住,Visual Studio可能提供的端口与您预期的不同。只需确保绑定中的端口与项目属性的Web选项卡中的端口相对应即可。

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx


5
我实际上正在打开一个在别处开发的项目,并将该项目的“协议”配置更改为“https”,重新加载该项目后,错误消失了。谢谢@Jacob! - Geoffrey
仅删除IISExpress文件夹对我来说并没有解决问题。在删除后,当我重新启动VS并打开此项目时,出现了一个错误对话框,只有在执行以下操作后才得以解决。该项目是我从asp.net页面下载的示例项目。 - Alisson Reinaldo Silva
顺便提一下,如果您同时拥有http和https绑定,请确保它们不使用相同的端口号。 - Ziad Akiki

44

我曾经遇到了同样的问题,但是对我有效的解决方案与之不同。

  1. 在VS2013中打开“调试(Debug)” > “{你的网站名称}属性(Properties)”
  2. 选择“Web”选项卡。
  3. 在“服务器(Servers)”下发现“覆盖应用程序根URL(Override application root URL)”被选中。我取消了它并保存了。

这就是我所需要的,使一切顺利运行。


25

请尝试以下步骤:

  1. 按照 @Yehuda Shapira 所说,删除 IISExpress 文件夹。
  2. 重新启动计算机。
  3. 删除项目中的 .vs 文件夹。

4
  1. 关闭Visual Studio。
  2. 删除“.vs”文件夹,这对我有用。如果我在VS打开的情况下删除“.vs”文件夹,它是无效的。
- akdora
2
删除 .vs 文件夹是唯一对我有效的方法。.vs 文件夹位于项目文件夹内,但默认情况下是隐藏的。 - George

18

遇到了同样的问题,但需要在管理员模式下启动VS2013。


1
很遗憾,这并没有帮助到我。 - AH.
1
然而,为什么?以前不需要进入文件夹运行devenv.exe,它可以正常工作。现在我必须以管理员身份运行devenv.exe。 - Nate R
也许是以管理员权限安装了某些更新,自此之后,它就再也不能在没有管理员特权的情况下工作了。 - mat

16

我之前也遇到了同样的问题,后来我打开了任务管理器 -> 进程,然后结束了 iisexpress.exe 进程。接着我尝试运行应用程序,并成功地运行了它。


14
在我的情况下,该项目存储在网络驱动器上,按照其他答案中描述的删除IIS Express文件夹的方法并没有起作用。我的解决方法是将项目复制到本地驱动器上,然后它就可以工作了!

14

我曾经遇到同样的问题,感谢@Jacob提供的信息。

原因是——在位于applicationhost的配置文件中,你的项目输入有误。

C:\Users\(yourusername)\Documents\IISExpress\config 
  1. 关闭所有的Visual Studio解决方案。
  2. 将IISExpress文件夹重命名为IISExpress-Copy(而不是删除,您可以将其复制一份)
  3. 现在再次打开VS并构建/调试项目,现在您会看到IISExpress文件夹再次为您创建,并具有正确的配置。

我尝试了其他回答中概述的步骤,但只有这个步骤适用于我。我不得不重命名“ IISExpress”文件夹。删除它对我没有起作用。 - webworm
对我不起作用。一切都始于我搞 https。 - Toolkit

10

我曾经遇到同样的问题,原因是在“属性”-->“Web”下设置了“覆盖应用程序根URL”的标志。 当我移除该标志后,IIS Express能够正常启动并使用指定的端口。


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