ASP.NET MVC5/IIS Express 无法调试 - 代码未运行
Posted
技术标签:
【中文标题】ASP.NET MVC5/IIS Express 无法调试 - 代码未运行【英文标题】:ASP.NET MVC5/IIS Express unable to debug - Code Not Running 【发布时间】:2013-10-28 15:44:46 【问题描述】:我启动一个 VS2013 VB.Net MVC5 Web 应用程序,在 HomeController About 方法中设置断点并运行“开始调试”,导航到 About 页面并收到消息 "Code not running - The current Thread is not currently running or the call stack could not be obtained"
阻止任何调试。
如果我在 Global.asax Application_Start 中设置断点,断点工作正常。更改“启用编辑并继续”没有任何区别。
有人知道发生了什么吗?
更新:我的环境是带有 VS2013 Ultimate 的 Windows 8.0 Pro。
我已经刷新了我的系统并完成了 Windows 8.1 Pro、VS2010 Ultimate、VS2012 Ultimate 和 VS2013 Ultimate 的全新安装。
对所有 3 个版本的 VS 进行相同的测试 - 文件 > 新项目 > MVC(默认)。所有 3 个版本的 VS 都报告“Process with an Id of xxx is not running.
”
VS2013 调试跟踪报告"The program '[7720] iisexpress.exe: Program Trace' has exited with code 0 (0x0). The program '[xxxx] iisexpress.exe' has exited with code -1073741816 (0xc0000008) 'An invalid handle was specified'.
"
我在管理员模式下运行 VS 并收到相同的结果。我已经卸载并重新安装了 IIS Express 8.0。
【问题讨论】:
尝试在 2012 年运行相同的项目?可能。? VS2012 可以正常调试,VS2010 也可以。问题与 ASP.NET MVC5 的 VS2013 隔离 - Silverlight/WPF,Winforms 调试正常。 我在将 VS Online 映射到本地驱动器时遇到了这个问题。我所做的是从源控制器中删除映射并重新映射驱动器。现在它工作正常:) 【参考方案1】:上述问题的解决方案很简单。关闭开发环境,转到 Documents 文件夹并重命名 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/)。
现在重新启动 PC,启动 VS,加载网站并在调试中运行。 IIS 自动重新生成 IISExpress 文件夹,环境变量解决了冲突。
【讨论】:
【参考方案2】:嗯.. 对我来说,是 Telerik JustMock Q3 2013 (13.3.1015.0) 导致了这个问题。从VS 2013卸载它,问题就消失了..
另见ASP.NET-MVC4 Code Not Running 和http://feedback.telerik.com/Project/105/Feedback/Details/63749-unable-to-debug-asp-net-projects-with-q3-2013
失去的一天和许多新的白发......诅咒你们 Telerik 家伙! ;)
【讨论】:
他们修补了它。我刚刚下载/安装了补丁,VS 恢复正常工作。 @Juventus18 能给个补丁下载页面的地址吗? @iman 我不是从网上下载的,我用的是 Telerik 控制面板。我现在的版本是2013.3.1114 对我来说同样的修复...刚刚删除了justmoq 我没有卸载它,我只是禁用了 JustMock Profiler,现在它可以工作了。真是浪费了我的时间。感谢发帖【参考方案3】:对我来说,解决方案要简单得多。在 Visual Studio 的解决方案资源管理器中,我右键单击 Web 项目,选择属性,然后导航到“Web”选项卡。从那里我将项目 URL 更改为另一个端口号。例如,如果它是http://localhost:1052
- 我将其更改为http://localhost:4356.
不确定这是否对其他人有帮助,但它对我有用 - 希望它也对你有用!
【讨论】:
IIS 是 Web 开发中最糟糕的部分之一。 对我来说,这就是问题所在。我将链接存储在浏览器中的端口号错误,因此通常调试器无法在那里运行。【参考方案4】:另一种情况可能是 IIS 用于您的应用程序的端口已被另一个正在运行的应用程序使用。尝试更改端口,看看它是否适合您。
【讨论】:
是的,就我而言,它是 Firefox。尝试关闭它并重新运行应用程序。或者使用命令行 (CMD) 和命令“netstat -b -a”查看哪个应用程序使用您的端口。【参考方案5】:如果您使用的是 64 位机器
转到 Visual Studio > 工具菜单 > 选项
【讨论】:
那张图片是什么?不幸的是我看不到:( 对于看不到图像的任何人:在“选项”对话框中,导航到“项目和解决方案”,然后导航到“Web 项目”。然后选中“为网站和项目使用 64 位版本的 IIS Express”复选框。【参考方案6】:我遇到了同样的问题,我的解决方案如下:
不要删除主要的applicationhost.config
(在您的“Documents/IIS Express”文件夹中),而是检查您的解决方案文件夹中是否存在带有“config”子文件夹的隐藏“.vs”文件夹。如果该文件夹存在并且它有自己的 applicationhost.config
文件,您需要重命名(或删除)该文件或对其进行编辑,并确保其中配置的网站与您的解决方案中的 ASP.NET Web 应用程序匹配您正在尝试调试。希望这会有所帮助。
【讨论】:
这是唯一对我有用的解决方案。非常感谢。 我刚刚删除了整个.vs文件夹,问题就解决了。 完美!你知道这种行为的确切原因吗? 我们的一位开发人员遇到了同样的问题,但团队的其他人没有。我们都从 Windows 7 操作系统升级到了 Windows 10。有问题的开发人员在 Windows 7 首次发布时一直在测试 ASP.net Core。当他全新安装 Win 10(没有 ASP.net Core)时,他遇到问题,因为他的项目在他的 D 驱动器上,并且仍然引用了 applicationhost.config。删除 applicationhost.config(在 Win 7 左右创建)修复了它。【参考方案7】:类似的问题出现在aspdotnet core同样的错误The program '[xxxx] iisexpress.exe' has exited with code -1073741816 (0xc0000008).
web.config 中的日志文件设置也没有产生任何信息:
<aspNetCore stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
要找到确切的错误,下一步在命令提示符下使用日志信息会有所帮助:
> dotnet restore
> dotnet run
在我的情况下,问题在于安装了 dotnet core v 1.0.0
,而需要全局安装版本 1.0.1
。
【讨论】:
【参考方案8】:我已经为我解决了这个问题。尝试将文件%SYSTEM_DRIVE%\Program Files\IIS Express\AppServer\applicationhost.xml
中的所有Deny
值更改为Allow
。请考虑您在 Visual Studio 设置中使用的 IIS Express Web 服务器是 32 位还是 64 位,这意味着我必须检查不同文件夹中的文件。然后重新启动 Visual Studio。我不知道这些配置行的安全问题,所以更改它们需要您自担风险,但它已经解决了我的问题。
<section name="asp" overrideModeDefault="Allow" />
<section name="caching" overrideModeDefault="Allow" />
<section name="cgi" overrideModeDefault="Allow" />
<section name="defaultDocument" overrideModeDefault="Allow" />
<section name="directoryBrowse" overrideModeDefault="Allow" />
<section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />
<section name="globalModules" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />
<section name="handlers" overrideModeDefault="Allow" />
<section name="httpCompression" overrideModeDefault="Allow" />
<section name="httpErrors" overrideModeDefault="Allow" />
<section name="httpLogging" overrideModeDefault="Allow" />
<section name="httpProtocol" overrideModeDefault="Allow" />
等等
【讨论】:
【参考方案9】:在 MVC 项目中从 Visual Studio 2013 迁移到 Visual Studio 2015 时,我遇到了类似的问题。
正如Johan J v Rensburg 指出的那样,删除整个 .vs 解决方案很有魅力。
【讨论】:
如果您认为自己会丢失某些东西,可以重命名它,然后在关闭并重新打开解决方案后将重新创建并修复问题【参考方案10】:我开始在 Visual Studio 2017 中使用 Asp.Net Core Web Applications 遇到这个问题。不管是 .Net 4.5.2 的 .Net Core Standard 版本还是 1.1 的 Core 版本 就我而言。当我开始调试时,IISExpress 崩溃了。
尝试了所有方法,直到我进入 Windows 10 中的添加/删除程序并卸载了 .net core 1.0 运行时(我同时安装了 1.0 和 1.1)。卸载后,我启动了 Visual Studio 2017 和我的 .Net Core Web 应用程序(两种),它们都重新开始工作了!
【讨论】:
这正是导致我的问题的原因。我安装了 .NET Core SDK 1.1.0 和 .NET Core SDK 2.0。删除旧的解决了这个问题!【参考方案11】:删除文件 C:\Users\congt\Documents\IISExpress
【讨论】:
【参考方案12】:以上答案都不适合我,但我终于找到了我的问题所在。希望这将有助于某人。
首先从命令提示符运行 IIS Express 以验证该站点是否可以运行
https://docs.microsoft.com/en-us/iis/extensions/using-iis-express/running-iis-express-from-the-command-line
我的情况是,我收到一条错误消息,指出 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\CONFIG\web.config 在第 14 行的 xml 格式错误。查看文件中的那一行,它刚刚说null null null null null 等
对我来说,解决方法是将 web.config 文件替换为我同事提供的文件。 重要您必须从运行相同版本的人那里获取文件,即如果您是 VS2015,请从运行 VS2015 的人那里获取副本。如果您从运行不同版本的人那里获得它,您会看到一条错误消息,指出它无法从清单中加载程序集。
希望这对尝试过上述所有建议的人有所帮助。我认为这对我来说是从试用模式更新并在 VS2017 中添加产品密钥
【讨论】:
【参考方案13】:以下步骤解决了 VS 2015 和 VS 2017 的问题:
关闭 VS。
导航到解决方案的文件夹并删除 hidden .vs 文件夹。
打开 VS。
按 F5 和 IIS Express 应该正常加载,允许您进行调试。
【讨论】:
【参考方案14】:转到项目目录 .vs/config/ 并删除 applicationhost.config 。然后重启项目。
【讨论】:
【参考方案15】:在我的情况下,问题是没有创建虚拟目录。
-
右键单击 Web 项目文件并转到属性
导航到网络
向下滚动到项目网址
点击创建虚拟目录按钮创建虚拟目录
【讨论】:
【参考方案16】:解决方法:对我来说,问题与活动的 chrome 会话有关。我关闭了所有 chrome 浏览器会话,然后尝试再次构建到 chrome。我正在使用 Visual Studio Professional 2017 版本 15.3.2。我遇到构建错误的 VS 应用程序是一个 WebAPI 项目。尝试单击绿色播放按钮时,我收到对话框错误提示“无法启动程序'http://localhost:18980/'。当前状态下的操作不合法。希望这篇文章对某人有所帮助。
【讨论】:
【参考方案17】:我通过执行以下操作使其工作:
删除应用文件夹下的“.vs”文件夹 从文档中删除“IISExpress”文件夹 通过转到工具 -> 选项 -> 项目和解决方案 -> Web 项目,在 Visual Studio 上启用 64 位版本的 IIS Express 可能需要从临时文件夹中删除所有内容 可能需要通过右键单击项目来更改端口,转到属性,在 web 下并更改项目 url 端口。【讨论】:
以上是关于ASP.NET MVC5/IIS Express 无法调试 - 代码未运行的主要内容,如果未能解决你的问题,请参考以下文章
如何在本地 IIS 而非 Express 中调试 ASP.NET 5 Web 应用程序
ASP.NET 5 MVC:无法连接到 Web 服务器“IIS Express”
如何将 PayPal Express Checkout 与 ASP.NET 网页站点(“Razor”)集成