在VS2012中调试MVC应用程序尝试启动两次IIS Express

29

更新

我确定这是一个Visual Studio的错误,没有明显的解决方法。我遇到了许多遇到相同问题的人。我在此提交了一个Microsoft的错误报告:

http://connect.microsoft.com/VisualStudio/feedback/details/778864/vs2012-is-spawning-two-iisexpress-processes-when-attempting-to-debug

如果你有与下面描述的同样的问题,请投票支持一下这个错误报告,以便得到更多关注。


每当我尝试在配置为在IIS Express(版本8)上运行的Visual Studio 2012中调试MVC3(或MVC4)应用程序时,就会出现以下错误:

输入图像说明

重点是:IIS Express确实启动了,即使Visual Studio认为没有,并且调试器无法连接。 IIS Express系统托盘会打开,我可以清晰地看到所有配置的网站都已启动:

输入图像说明

奇怪的是,IIS Express系统托盘报告在运行IIS Express时出现了一些错误。这是它的原话:

输入图像说明

这是一个非常让人困惑的问题。它报告说8080端口被一个IIS Express进程使用了,而这个进程正是Visual Studio刚启动的那个。所以,Visual Studio试图启动两次IIS,并且当第二次可预测地失败时,调试器崩溃了。需要注意的是,在Visual Studio中启动调试配置之前,我确保没有任何IIS Express进程在运行中。使用Process Monitor验证后发现,Visual Studio实际上尝试了两次启动IIS Express:

enter image description here

在上面的屏幕截图中可以清楚地看到运行在IIS Express PID 4732上的网站。PID 4924是第二次尝试启动IIS Express失败的进程。

这个问题最初出现在Windows 7上。我完全重新格式化了硬盘,安装了全新的VS2012,但依然出现了相同的问题。我更进一步,重新格式化了硬盘,安装了Windows 8和全新的VS2012,但问题仍然存在。

我创建了全新的空白MVC3和MVC4项目。什么也没有解决它。

我都快抓狂了。如果有帮助,将不胜感激。


你尝试过从命令行手动运行IIS Express吗? - Chris Moschini
是的。只要没有正在运行的IIS Express进程,从命令行运行就可以正常工作。 - w.brian
我已经尝试过了,不起作用。 - w.brian
你尝试过不同的媒体源、试用版本等吗?一个干净的 Windows 系统,加上一个干净的更新版本的 Visual Studio 应该像其他人的设置一样运行良好。否则每个人都会遇到这个问题。建立一个 Win8 虚拟机,在那里尝试 VS2012 试用版,以避免瞎折腾。 - OakNinja
在项目属性页面中有什么特殊的设置吗?右键单击项目 > Web(选项卡)> 服务器部分或在生成事件(选项卡)> 预先/后构建事件中?您能否提供配置项目在IIS Express上运行的步骤? - Andy Refuerzo
显示剩余23条评论
11个回答

8

w.Brian,我从一开始就关注这篇文章,因为我也遇到了同样的问题,现在我已经发现了问题的原因。我已经成功复制并修复了这个错误:

VS2012启动iis express两次的原因与附加到域和登录域帐户有关。一旦我登录到完全是本地管理员帐户,我就能够启动和调试MVC4应用程序而没有任何问题。这是使用Windows 8 Pro,VS2012 Update 1,连接到我的域,并且没有其他软件/扩展/配置。完全干净的安装。


兄弟,没错。我在一个域上确实遇到了这个问题,但从未考虑过这个。明天我会验证一下。如果这是问题的原因,我会将其标记为答案,并在我打开的错误票证中告知微软。 - w.brian
你太棒了,Epithanatios。你是绝对正确的。我会让微软知道。 - w.brian
嗨w.brian,你能否在你的测试机上尝试使用不同的域帐户?我已经成功地使用我的测试机启动了Visual Studio,除了我的帐户之外,任何其他域帐户都可以。我快要到要求清除我的帐户并创建一个新帐户的地步了。这似乎与我的帐户设置有关,但我们不确定我的帐户和其他人之间有什么不同。 - Ben Guenter
感谢@w.brain进行这项研究。我也在不同的安装中遇到了这个问题,发现IISExpress被启动了两次。然而,我不想使用另一个域帐户运行它。希望微软公司能解决这个问题。 - BrandonG
我现在遇到了这个问题。我已经登录其他开发机器(那里的开发人员没有这个问题),并看到了同样的错误。他们来到我的机器上,并成功地调试了应用程序。我的IT正在深入研究我的域用户属性,但我们最终可能会创建一个新用户。 :( - Griffin
有趣的是,无论IIS Express是否已经运行,错误都会发生。有时警报会包括端口已经被使用的投诉。大多数情况下没有。 - Griffin

5

您好,也许这些解决方案可以帮到您。

  • 将RuntimeVersion管理器从“4.0”更改为“4.0.30319”

示例:

<applicationPools>
<add name=”Clr4IntegratedAppPool” managedRuntimeVersion=”v4.0.30319″ managedPipelineMode=”Integrated”     CLRConfigFile=”%IIS_USER_HOME%\config\aspnet.config” autoStart=”true” /><br/><br/>
参考:问题:Visual Studio 2012 >“无法启动IIS Express Web服务器”

在/元素下,注释掉该行:

<add name="HttpLoggingModule" image="%IIS_BIN%\loghttp.dll" />

在//元素下,将该行注释掉。
<add name="HttpLoggingModule" lockItem="true" /> 

保存更改后,请尝试重新启动IIS Express。



参考:来自stackoverflow论坛:无法启动IIS Express Web服务器


2
对我来说有效。只需切换到Visual Studio Build in Dev Web服务器,然后运行应用程序。重新启动,然后切换回本地IIS Express。 - Patrik Lindström
1
感谢您编译这些答案,因为我已经在各种SO和Technet问题中看到它们分散。它们都没有对我有用。在Connect上升级了该错误。 - ardila

4

右键单击MVC项目/*一个接一个地全部*/
转到属性
转到Web选项卡
您必须已经选中了“使用本地IIS Web服务器”单选框
在下面的文本框中,请确保没有项目使用同一端口,对于您的情况来说是8080


3

这对我也起作用了。为了使其工作,我还必须删除我的现有iis express目录。 - BrandonG
还要看一下这些错误票据: https://connect.microsoft.com/VisualStudio/feedback/details/848945/visual-studio-2012-iis-express-fails-to-start-if-application-name-contains-bg https://connect.microsoft.com/VisualStudio/feedback/details/865116/process-with-an-id-of-id-is-not-running - David

2

1
我觉得人们忽略了阅读原始问题。这不是IIS Express无法启动的问题。IIS Express正在启动,但由于某种原因,Visual Studio尝试启动它两次,导致调试器无法连接。 - w.brian
@w.brian - 确实是我得到的,没有进展?一旦我关闭了错误对话框,我就能够从IISExpress工具栏实用程序中运行网站。但这是一个相当糟糕的体验。 - philiphobgen
@stupid-phil 没有进展。 我确信现在这是一个错误。 我已经在这里向Microsoft创建了错误票证:http://connect.microsoft.com/VisualStudio/feedback/details/778864/vs2012-is-spawning-two-iisexpress-processes-when-attempting-to-debug我认为最好的解决方法是投票支持这个票证,以便引起一些注意。 - w.brian
我已经问了几次一个问题:你尝试过不同的Visual Studio 2012源,比如官方试用版吗?@stupid-phil,你的设置是什么? - OakNinja
我有一个VS2012 Ultimate的MSDN下载。运行在Win8 Pro上。 - philiphobgen
仅用于排除某些场景:已安装IIS Express的版本是什么?您尝试通过从添加/删除程序中卸载然后使用Web平台安装程序重新安装IIS Express吗?您重置了Visual Studio设置吗(http://msdn.microsoft.com/en-us/library/ms247075.aspx)?您是否尝试创建一个具有管理员权限的新Windows用户,并尝试使用该用户进行调试,以排除用户设置错误?如果这失败了,请尝试Visual Studio试用版以排除与您的msdn源特定的错误。 - OakNinja

2

为了避免问题,您是否在文件夹/system32/drivers/stc/hosts中定义了127.0.0.1 localhost?否则,您可以在此处检查,这可能是解决问题的关键。

祝好


1
本周,我遇到了同样的问题:IIS Express已经启动,但是VS抱怨无法启动IIS Express,调试失败。
最终,我通过为IIS Express应用2014年6月的热修复程序来解决了这个问题。 我们(我的IT支持和我)在遇到一个非常不太可能的问题后,发现了这个热修复程序。 微软验证了IISExpress 8.0中的一个错误,如果应用程序名称的任何部分包含字母组合“bg”(我的用户名以“bg”开头),则会导致其表现异常。 注意:VS 2013 更新 4 已经包含了这个修复程序,这可能是为什么有些人只需更新到 VS 2013 就可以成功的原因。
以下是我们找到的一些与该问题相关的链接(您可能需要浏览一下才能找到相关主题):

1
在我的情况下有效的方法是卸载项目,然后编辑csproj文件。我删除了所有关于IIS和IISEXPRESS的部分。然后重新加载项目并再次从项目属性中选择使用IIS EXPRESS。然后它就可以工作了。

1

我在Windows 8和Windows 8.1上使用我的域账户时遇到了同样的问题。在我的情况下,将“文档”文件夹路径更改为D:\Documents(右键单击“文档”文件夹 -> 属性 -> 位置)有所帮助。


看起来你也遇到了和我一样的问题。看看我的答案。 - Griffin

0
今天我遇到了一个相同的问题(在Visual Studio中调试时,IISExpress尝试启动两次并失败),当我帮助另一个开发人员处理Web Forms网站时。尝试了几种解决方案后,我们发现可以通过以下方式解决问题:
  • 创建一个新的、空的Visual Studio解决方案
  • 添加一个指向新的、空的文件夹的“现有网站”
  • 将现有(不起作用的)网站的内容复制到我们创建的新文件夹中

仅仅是从原始解决方案中删除和重新添加网站并没有起作用,创建一个新的解决方案并将现有网站添加回去也没有起作用。我可以从命令行启动IISExpress。

在进行了.SLN文件的前后比较之后,我认为问题就出在那里。由于我已经找到了一种解决方法,所以我没有花太多额外的时间在这上面。显然,对于更大的项目,从头开始重新创建整个解决方案可能不是一个选项(我们的项目非常小),但希望这至少指出了正确的方向。


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