调试结束后IIS Express无法停止的问题排查求助
我之前在VS2017调试ASP.NET Core项目时也碰到过一模一样的问题——停止调试后IIS Express死活不自动关掉,折腾了好一阵才找到几个有效的解决方向,你可以挨个试试:
检查Web项目调试相关设置
打开Tools -> Options -> Debugging -> Web Projects,确认以下两个选项是否已勾选:- Stop debugger when browser window is closed
- Close browser when debugging stops
VS版本更新后,这些配置偶尔会被重置,重新勾选后再测试看看。
重置IIS Express配置
以管理员身份打开命令提示符,运行以下命令重置IIS Express的配置文件,修复可能存在的配置损坏问题:"%ProgramFiles(x86)%\IIS Express\iisexpress.exe" /reset检查项目调试属性
右键你的ASP.NET Core项目,选择属性 -> 调试:- 确认
Launch选项设置为IIS Express; - 检查是否勾选了
Launch browser,如果未勾选,调试停止时IIS Express可能收不到终止信号; - 若项目启用了SSL,尝试暂时关闭
Enable SSL选项,测试是否是SSL配置导致进程挂起。
- 确认
清除VS调试缓存
完全关闭Visual Studio,删除以下两个目录的内容,然后重启VS:%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\15.0_xxxx\ComponentModelCache(xxxx是你的VS实例唯一标识,目录名类似15.0_abcdef12)%USERPROFILE%\AppData\Local\Temp\VSDebugger
缓存文件损坏经常会引发VS调试相关的异常。
修复Visual Studio安装
打开VS Installer,找到你的VS2017实例,点击Modify后选择Repair。版本更新过程中可能出现组件安装不完整的情况,修复后能解决不少隐性问题。检查ASP.NET Core托管模式
打开项目根目录下的web.config,找到<aspNetCore>节点,查看hostingModel属性:
如果设置为OutOfProcess,尝试改为InProcess(ASP.NET Core 2.x在.NET Framework 4.6.1上支持该模式),部分情况下进程外托管会导致IIS Express无法自动终止。应急方案:手动结束进程
如果以上方法暂时无效,打开任务管理器,找到iisexpress.exe进程(注意可能有多个实例),右键选择结束任务,可以临时解决进程残留的问题。
内容的提问来源于stack exchange,提问作者Joel




