You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core3.1 Azure Function出现StackOverflow异常排查求助

问题原因分析
  • 你碰到的StackOverflowException,根源就是那行.AddSingleton(serviceProvider => serviceProvider)代码。它试图把IServiceProvider本身注册成单例服务,DI容器解析这个服务时会陷入无限递归:容器要创建IServiceProvider实例,工厂函数又需要传入IServiceProvider,循环调用直接把栈空间耗光,最终在TryAddEnumerables处理服务注册集合时触发了异常。
移除该行代码的副作用说明
  • 没有破坏性影响:.NET Core的DI容器默认就支持直接注入IServiceProvider,根本不需要手动注册这一行。移除后,你照样能在任意服务的构造函数里正常注入IServiceProvider,容器会自动提供内置的实例。
  • 规避潜在隐患:手动注册IServiceProvider会打乱容器的内置逻辑,除了当前的栈溢出问题,后续还可能出现服务解析顺序异常、作用域管理混乱等不可预料的问题,移除后反而能让DI容器回到正常工作状态。
后续建议
  • 检查代码里依赖IServiceProvider的场景:如果是为了动态解析服务,直接用默认的注入方式就行,完全不需要手动注册那行代码。
  • 要是需要更精细的服务解析控制,建议注入IServiceScopeFactory来创建作用域,这是DI容器推荐的最佳实践,比直接依赖IServiceProvider更稳妥。

内容的提问来源于stack exchange,提问作者kudlatiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:56:06