ASP.NET MVC5/IIS Express无法进行调试 - 代码未运行

40
我开始了一个VS2013 VB.Net MVC5 Web应用程序,在HomeController About方法中设置了一个断点,运行“开始调试”,导航到About页面并收到消息 “代码未运行-当前线程当前未在运行或无法获取调用堆栈” 阻止任何调试。
如果我在Global.asax Application_Start中设置断点,则断点可以正常工作。更改“启用编辑和继续”不会有任何影响。
是否有人知道发生了什么?
更新:我的环境是Windows 8.0 Pro,带有VS2013 Ultimate。
自那时起,我清空了系统并全新安装了Windows 8.1 Pro,VS2010 Ultimate,VS2012 Ultimate和VS2013 Ultimate。
在所有3个版本的VS上执行相同的测试 - 文件>新项目>MVC(默认值)。所有3个版本的VS都报告“具有xxx Id的进程未运行。
VS2013调试跟踪报告,“程序'[7720] iisexpress.exe:程序跟踪'已退出并显示代码0(0x0)。程序'[xxxx] iisexpress.exe'已显示代码-1073741816(0xc0000008)'指定了无效的句柄'。
我以管理员模式运行和退出VS并获得相同的结果。我已卸载并重新安装了IIS Express 8.0。

尝试在2012年运行同一项目?可能吗? - Sravan
VS2012 调试正常,VS2010 也是如此。问题仅限于使用 ASP.NET MVC5 的 VS2013 - Silverlight/WPF、Winforms 调试正常。 - Graeme
我在将VS Online映射到本地驱动器时遇到了这个问题。我的解决方法是从源控制器中删除映射,然后重新映射驱动器。现在它可以正常工作 :) - Charitha Goonewardena
17个回答

45

对我来说,解决方案要简单得多。在我的Visual Studio中的“解决方案资源管理器”中,右键单击Web项目,选择属性,然后导航到“Web”选项卡。从那里,我将项目URL更改为另一个端口号。例如,如果它是http://localhost:1052 - 我将其更改为http://localhost:4356.

具有xxx ID的进程未在运行。

不确定这是否会对其他人有所帮助,但对我有效- 希望对您也有效!


14
IIS是Web开发中最糟糕的部分之一。 - Den
对我来说,那就是问题所在。我在浏览器中存储了错误端口号的链接,因此调试器通常无法在那里运行。 - FrenkyB

33

如果您使用的是64位机器

进入Visual Studio > 工具菜单 > 选项

Options window with Projects and Solutions > Web Projects selected and option Use the 64 bit version of IIS Express selected


那张图片是什么?很不幸,我看不见 :( - canmustu
对于任何无法看到图像的人:在“选项”对话框中,导航到“项目和解决方案”,然后选择“Web 项目”。然后勾选“为网站和项目使用 64 位版本的 IIS Express”复选框。 - Melissa Avery-Weir

32

我曾经遇到相同的问题,我的解决方法如下:

不要删除主要的applicationhost.config文件(在你的“文档/IIS Express”文件夹中),而是检查你的解决方案文件夹中是否有一个隐藏的“.vs”文件夹,其中包含一个“config”子文件夹。如果存在该文件夹并且它有自己的applicationhost.config文件,则需要重命名或删除该文件,或者编辑该文件并确保其中配置的网站与你正在尝试调试的解决方案中的ASP.NET Web应用程序匹配。希望这能帮到你。


3
这是唯一对我有效的解决方案。非常感谢。 - AVK
2
我刚刚删除了整个.vs文件夹,问题得到了解决。 - Johan J v Rensburg
完美!你知道这种行为的确切原因吗? - Bruno Bieri
我们的其中一位开发人员遇到了同样的问题,但是团队中的其他人没有。我们都从Windows 7操作系统升级到了Windows 10。有问题的开发人员在Windows 7首次推出ASP.net Core时进行了测试。当他进行了Win 10的干净安装(没有安装ASP.net Core)后,由于他的项目位于D驱动器上且仍然引用了applicationhost.config,因此遇到了问题。删除applicationhost.config(大约是Win 7创建的)解决了这个问题。 - Charles Byrne

17

我在将MVC项目从Visual Studio 2013迁移到Visual Studio 2015时遇到了类似的问题。

就像 Johan J v Rensburg 所指出的那样,删除整个 .vs 解决方案可以解决这个问题。


你可以将其重命名,如果你认为不会有损失的话,然后关闭并重新打开解决方案,它就会被重新创建,问题就会得到解决。 - Iman

13

以下步骤适用于解决 VS 2015 和 VS 2017 的问题:


关闭 VS。

导航到解决方案文件夹并删除隐藏的 .vs 文件夹。

打开 VS。

按 F5 键,IIS Express 应正常加载,允许您进行调试。


11
以上问题的解决方案很简单。关闭开发环境,转到“文档”文件夹并重命名 IISExpress 文件夹。现在设置环境变量 _CSRUN_DISABLE_WORKAROUNDS(参考:http://gauravmantri.com/2013/02/05/workaround-for-iis-express-crashing-when-running-windows-azure-cloud-service-web-role-with-multiple-instances-in-windows-azure-sdk-1-8-compute-emulator/)。

现在重新启动计算机,启动 VS,加载网站并在调试模式下运行。IIS 将自动重新生成 IISExpress 文件夹,环境变量解决了冲突。


10

3
他们修补了它。我只需下载/安装这个补丁,Visual Studio就恢复正常工作了。 - solidau
@Juventus18,能否请您提供补丁下载页面的链接? - Iman Mahmoudinasab
1
@iman 我没有从网上下载,我使用的是Telerik控制面板。我的当前版本是2013.3.1114。 - solidau
对我来说也是一样的解决方法...只需移除justmoq即可。 - eka808
1
我没有卸载它,我只是禁用了JustMock Profiler,现在它可以工作了。这浪费了我大量的时间。感谢您的发布。 - jmichas

3

另一种情况可能是IIS用于您的应用程序的端口已被其他正在运行的应用程序占用。尝试更改端口,看看是否可以解决问题。


2
是的,在我的情况下是火狐浏览器。尝试关闭它并重新运行应用程序。或者使用命令行(CMD)输入命令“netstat -b -a”来查看哪个应用程序正在使用您的端口。 - Nigrimmist

2
我通过以下步骤使其工作:
  • 删除应用程序文件夹下的“.vs”文件夹
  • 从文档中删除“IISExpress”文件夹
  • 通过转到“工具” -> “选项” -> “项目和解决方案” -> “Web 项目”,启用 IIS Express 的64位版本 enter image description here
  • 可能需要从 temp 文件夹中删除所有内容
  • 可能需要右键单击项目,进入属性,在 Web 下更改项目 URL 端口。

2
我在使用Visual Studio 2017创建Asp.Net Core Web应用程序时遇到了问题。无论是使用带有.Net 4.5.2的.Net Core标准版本还是使用Core 1.1版本,都会在开始调试时导致IISExpress崩溃。
尝试了各种方法,但都没有起作用,直到我进入Windows 10中的“添加/删除程序”并卸载了.net core 1.0 runtime(我同时安装了1.0和1.1版本)。卸载后,我重新启动了Visual Studio 2017,我的.Net Core Web应用程序(两种类型)都恢复正常工作!

1
这正是导致我的问题的原因。我安装了.NET Core SDK 1.1.0和.NET Core SDK 2.0。移除旧版本解决了这个问题! - Oliver

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