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

Posted

技术标签:

【中文标题】在 VS2012 中调试 MVC 应用程序尝试启动 IIS Express 两次【英文标题】:Debugging MVC application in VS2012 attempts to start IIS Express twice 【发布时间】:2013-02-07 22:54:56 【问题描述】:

更新

我确定这是一个没有明显解决方案的 Visual Studio 错误。我遇到过很多人有同样的问题。我已在此处向 Microsoft 提交了 bug 票:

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 时出现了一些错误。它是这样说的:

这是一个严重的 WTF。它报告 8080 正在被 IIS Express 进程使用 - 刚刚由 Visual Studio 启动。因此,Visual Studio 尝试启动 IIS 两次,而当它可以预见地第二次失败时,调试器就会退出。我应该注意,在 Visual Studio 中启动调试配置之前,我绝对确定没有 IIS Express 进程已经在运行。我使用 Process Monitor 来验证 Visual Studio 实际上是在尝试启动 IIS Express 两次:

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

此问题最初是在安装 Windows 7 时发生的。我完全重新格式化,安装了 VS2012 的新副本,并遇到了同样的问题。我更进一步,重新格式化,安装了 Windows 8 和 VS2012 的新副本,但问题仍然存在。

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

我在这里扯头发。任何帮助将不胜感激。

【问题讨论】:

你安装了扩展吗? @w.brian,如果你切换回卡西尼会发生什么? 无。我已经安装了 Visual Studio 2012 Update 1。否则它是一个完全普通的安装。 @DaveA Cassini 工作正常,但我需要 IIS Express。 明白。我也更喜欢 IIS Exp。寻找信息进行三角测量。你玩过专用端口和动态端口之间的切换吗?您最近是否升级了 VS(2012 年?) 【参考方案1】:

w.Brian,我从一开始就关注这篇文章,并且在很长一段时间内遇到完全相同的问题,我刚刚发现是什么导致了我的问题。我已经能够自己重现并修复错误:

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

【讨论】:

老兄,是的。我肯定在域上遇到了这个问题,但从未考虑过。明天我将能够验证这一点。如果这是问题,我会标记为答案,并在我打开的错误票上让 Microsoft 知道。 你摇滚 Epithanatios。你完全正确。我会让微软知道的。 您好 w.brian,您可以在您的测试机器上尝试不同的域帐户吗?我已尝试使用我的测试机成功启动 Visual Studio,并使用除我之外的任何其他域帐户。我几乎要要求擦除我的帐户并创建一个新帐户。这似乎与我的帐户的设置方式有关,但我们不确定我的帐户与其他人的帐户有何不同。 感谢@w.brain 进行这项研究。我在安装过程中也遇到了这个问题,并且认为 IISExpress 被启动了两次。但是,我不想用另一个域帐户运行它。希望 MSFT 能解决这个问题。 我现在遇到了这个问题。我已经登录到其他开发机器(开发人员没有问题)并看到同样的错误。他们来到我的机器上并成功调试了应用程序。我的 I.T.正在深入研究我的域用户属性,但我们最终可能会创建一个新用户。 :(【参考方案2】:

嗨,也许这个解决方案可以帮助你。

管理 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/>

参考:Issue: Visual Studio 2012 > “Unable to launch the IIS Express Web Server”

使用Process Monitor 解决问题参考:Debugging the “Unable to launch the IIS Express Web server.” error from Visual Studio 2012. 尝试切换到内置于 Web 主机的 Visual Studio 并运行它。运行一次后,您应该能够切换回 iis express参考:来自论坛 Unable to launch the IIS Express Web server 尝试重新安装Visual Studio 2010 SP1,其中包含iis-express。 通过修改位于 %userprofile%\documents\IISexpress\config 目录中的 applicationhost.config 来禁用日志记录模块。为此,您需要在文件中注释掉几行。

在/元素下,注释掉一行

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

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

<add name="HttpLoggingModule" lockItem="true" /> 

保存更改后,尝试重新启动 iis express。

参考:来自 *** 论坛:Unable to launch the IIS Express Web server

【讨论】:

它对我有用。只需在 Dev Web 服务器中切换到 Visual Studio Build,然后运行应用程序。重新启动然后切换回本地 IIS Express。 感谢您编译这些答案,因为我看到它们分散在各种 SO 和 Technet 问题中。他们都没有为我工作过。在 Connect 上支持该错误。【参考方案3】:

右键单击您的 MVC 项目/*所有这些项目一个一个*/ 转到属性 转到网页标签 您必须已选中“使用本地 IIS 网络服务器”单选框 在下面的文本框中,确保没有项目具有相同的端口,在您的情况下是 8080

【讨论】:

【参考方案4】:

在这里看看答案:

http://forums.asp.net/t/1953087.aspx?VS+2013+Unable+to+launch+the+IIS+Express+Web+Server

当 'bg' 是用户名的一部分时,在 Windows 8 机器上这是一种奇怪的行为

【讨论】:

这对我也有用。我还必须删除现有的 iis express 目录才能使其正常工作。 也可以看看这个 bug 票:connect.microsoft.com/VisualStudio/feedback/details/848945/…connect.microsoft.com/VisualStudio/feedback/details/865116/…【参考方案5】:

我可能会迟到一点 - 这是我的两便士:

a)http://saintgimp.org/2012/05/03/fixing-the-error-unable-to-launch-the-iis-express-web-server-failed-to-register-url-access-is-denied/

b)http://abhijitjana.net/2010/07/20/unable-to-start-web-site-on-iis-process-can-not-access-the-file-because-its-being-used-by-another-process-how-to-resolve/

概要:当前端口(通常是 Skype)有一个 URL 预留

【讨论】:

我觉得人们忽略了阅读原始问题。这不是 IIS Express 无法启动的问题。 IIS Express 正在启动,但由于某种原因,Visual Studio 尝试启动它两次,并且调试器无法连接。 @w.brian - 正是我得到的,没有进展?关闭错误对话框后,我就可以从 IISExpress 工具栏实用程序运行该站点。但这是一次非常糟糕的体验 @stupid-phil 没有进展。我确定在这一点上这是一个错误。我在这里与 Microsoft 一起创建了一个 bug 票:connect.microsoft.com/VisualStudio/feedback/details/778864/… 我认为解决这个问题的最好办法是投票给票,以便引起一些关注。 我已经问了好几次了:你有没有试过不同的Visual Studio 2012源码​​,比如官方试用版? @stupid-phil,你的设置是什么? 我有一个 VS2012 Ultimate 的 MSDN 下载。在 Win8 Pro 上运行【参考方案6】:

以防万一,您是否在 文件夹/system32/drivers/stc/hosts 中定义了127.0.0.1 localhost?否则,你可以查看here,这可能只是关键。

干杯

【讨论】:

【参考方案7】:

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

【讨论】:

看来你和我有同样的问题,看我的回答。【参考方案8】:

这周,我遇到了同样的问题:IIS Express 启动,但是 VS 抱怨它无法启动 IIS Express 并且调试失败。

我终于通过对 IIS Express 应用 2014 年 6 月的热修复解决了这个问题:

http://www.microsoft.com/en-us/download/confirmation.aspx?id=43380

我们(我和我的 IT 支持人员)在遇到一个非常不可能的问题后发现了这个修补程序。显然,MS 验证了 IISExpress 8.0 中的一个错误,如果应用程序名称的任何部分包含字母组合“bg”(我的用户名以 bg 开头),它会导致行为异常:

https://connect.microsoft.com/VisualStudio/feedback/details/848945/visual-studio-2012-iis-express-fails-to-start-if-application-name-contains-bg

注意:VS 2013 Update 4 已经包含此修复程序,这可能就是为什么有些人仅通过更新到 VS 2013 就能成功的原因。

我们发现了一些与该问题相关的其他链接(您可能需要浏览一下才能找到该主题):

http://forums.asp.net/t/1953087.aspx?VS+2013+Unable+to+launch+the+IIS+Express+Web+Server https://connect.microsoft.com/VisualStudio/feedback/details/865116/process-with-an-id-of-id-is-not-running

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

我今天在帮助另一个开发人员使用 Web 表单站点时遇到了相同的问题(IISExpress 尝试启动两次,但在 Visual Studio 中点击调试时失败)。在尝试了几种解决方案后,我们发现我们可以通过以下方式解决问题:

创建新的空 Visual Studio 解决方案 添加指向新的空文件夹的“现有网站” 将现有(非工作)网站的内容复制到我们创建的新文件夹中

仅将网站删除并重新添加到原始解决方案不起作用,创建新解决方案并重新添加现有网站也不起作用。我可以从命令行启动 IISExpress 就好了。

在对 .SLN 文件进行前后比较之后,我相信这就是问题所在。由于我找到了解决方法,因此我没有花很多额外的时间。显然,从头开始重新创建整个解决方案可能不是大型项目的选择(我们的项目非常小),但希望这至少指向正确的方向。

【讨论】:

【参考方案11】:

当然有两个站点 FrontEnd 正在运行,但请注意一个实例是 HTTP,另一个是 HTTPS

SSL Enabled 在网站属性中设置为 TrueWeb 选项卡上的Project Url 设置为 HTTP 时,可能会获得两个实例地址。

将它们都设为 HTTP(或 HTTPS),这样可能会解决问题。

【讨论】:

以上是关于在 VS2012 中调试 MVC 应用程序尝试启动 IIS Express 两次的主要内容,如果未能解决你的问题,请参考以下文章

VS2012:调试器启动时ntdll.dll中的断点没有更多信息

如何使用VS2012调试QT程序

VS2012无法启动调试,只显示会附加到进程

.Net用VS 2012远程调试Win2003网站

vs2012调试时怎么查看堆中的数据(动态数组)? 求详细解答。 用的c++

为啥我用vs2012编完c语言之后调试时显示“无法启动程序,系统找不到指定文件”?