为何操作Angular UI的图片选择控件会导致VS2019运行的.NET Core 3 Web API停止?
排查与解决方案
- 首先验证项目启动配置:
如果你使用的是微软官方.NET Core + Angular整合模板,或是将Angular与Web API配置为解决方案多启动项,检查多启动项的停止规则:默认部分VS配置会在其中一个关联启动项目退出时,终止所有关联启动的进程。你可以先单独启动Web API项目,不用VS启动Angular前端,手动打开浏览器访问前端页面操作文件选择控件,验证后端是否还会停止。如果单独启动后后端正常,说明是Angular的dev server进程在文件选择操作时异常退出,触发了多启动的全局停止规则,和后端本身无关。 - 排查.NET Core进程的退出原因:
打开VS的「输出」窗口,下拉选择「ASP.NET Core Web 服务器」分类,查看服务停止前的最后输出内容,重点关注退出代码、未处理异常日志。如果存在未捕获的异常,哪怕是静态资源访问、SPA中间件抛出的异常,也会导致服务进程直接终止。
另外检查VS调试的异常设置(调试>窗口>异常设置),确认是否勾选了不必要的运行时异常捕获规则,部分非致命异常被调试器捕获后会直接中断进程,看起来就像服务停止运行。 - 检查SPA托管配置与前端语法问题:
如果你用了.NET Core内置的SPA中间件(UseSpa/AddSpaStaticFiles)托管Angular前端,注意你的Angular模板代码存在语法问题:
你的ngStyle绑定写为{'background-image': 'selectedImage'},首先background-image属性需要用url()包裹值,其次你写的是字符串'selectedImage'而不是变量selectedImage,该错误如果触发Angular构建热重载异常,可能会连带托管它的.NET进程崩溃。可以先把这段错误的ngStyle绑定注释掉,再验证问题是否复现。 - 关闭调试辅助功能验证:
先尝试不附加VS调试器,直接用dotnet run命令启动Web API项目,再操作前端的文件选择控件,如果此时服务不会停止,说明是VS的调试辅助功能(如编辑并继续、热重载、断点规则)导致的进程中断,你可以重置VS调试配置后再重试。
内容的提问来源于stack exchange,提问作者Bob Horn
相关产品推荐
相关产品推荐

