IIS托管.NET Core API无规律返回CORS伴dotnet.exe崩溃问题求助
.NET Core API 间歇性CORS错误故障解决
你遇到的间歇性CORS报错不是CORS配置问题,是dotnet运行时进程崩溃导致的。IIS在进程崩溃到重启完成的间隙,无法正常处理请求返回CORS响应头,前端就会抛出跨域错误,和你配置的跨域规则无关。
系统事件查看器报错信息:
故障应用程序名称: dotnet.exe,版本: 2.1.30411.1,时间戳: 0x61145604
故障模块名称: KERNELBASE.dll,版本: 10.0.14393.4350,时间戳: 0x606eb12a
异常代码: 0xe0434352
故障偏移量: 0x000dc602
故障进程 ID: 0x90c8
故障应用程序启动时间: 0x01d7a3aea3b721ad
故障应用程序路径: C:\Program Files (x86)\dotnet\dotnet.exe
故障模块路径: C:\Windows\System32\KERNELBASE.dll
报告 ID: 5d9880c5-2b58-46fe-ab80-c1e48327be77
故障包全名:
故障包相对应用程序 ID:
排查与解决步骤
- 优先升级运行时版本:你当前使用的.NET Core 2.1已经结束官方支持,存在大量已知运行时崩溃漏洞,建议迁移到.NET 6或更高LTS版本,绝大多数同类问题升级后会直接修复。
- 临时修复方案:如果暂时无法完成版本迁移,先安装.NET Core 2.1系列最后发布的运行时安全补丁,安装后重启IIS站点验证问题是否消失。
- 定位具体异常代码:
0xe0434352是CLR未处理异常的标准错误码,本质是你的应用代码抛出了未捕获的异常导致进程直接退出。你需要在Program.cs/Startup.cs中添加全局异常捕获逻辑,将所有未处理异常的堆栈信息输出到本地日志文件,即可定位到触发崩溃的具体业务代码。 - IIS配置检查:确认应用程序池的「闲置超时」设置大于你业务的常规空闲间隔,「启用32位应用程序」配置和你部署的API编译位数匹配,避免意外的进程回收触发请求失败。
- 验证方案:开启IIS的失败请求跟踪功能,过滤5xx状态码的请求,对比请求报错时间和事件查看器中dotnet进程崩溃的时间,二者完全一致即可确认故障根因。
内容的提问来源于stack exchange,提问作者Jeff Geli
相关产品推荐
相关产品推荐

