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

已注册为单例的Cosmos Client仍被释放,调用ReadContainerAsync报错

异常原因分析

针对你遇到的CosmosObjectDisposedException异常,结合你的Autofac注册代码,可能的原因如下:

  • CosmosClient实例被手动释放:
    尽管你将CosmosClient注册为单例,但如果代码中存在手动调用cosmosClient.Dispose()的逻辑(比如错误地用using块包裹了从Autofac解析出的CosmosClient实例),会直接销毁全局唯一的CosmosClient实例。后续所有依赖它的Database、Container以及数据提供者类都会因为依赖的客户端已释放而抛出该异常。

  • Autofac根容器被提前销毁:
    Autofac会管理单例对象的生命周期,当根容器被调用Dispose()方法释放时,所有实现了IDisposable接口的单例对象(包括CosmosClient)都会被自动释放。如果你的应用在运行过程中提前销毁了Autofac容器,就会导致CosmosClient失效。

  • 注册代码的语法/逻辑错误:
    你提供的最后一段SecondContainerDataProvider的注册代码存在语法错误(括号不匹配,.AsImplementedInterfaces()和.SingleInstance()的调用位置错误),如果实际代码中存在这类问题,可能导致依赖解析失败,间接引发生命周期管理异常。另外,虽然Database和Container注册为单例是合理的,但要确保不会误操作释放这些对象(不过它们的释放不会影响CosmosClient,但CosmosClient释放会导致它们失效)。

  • 异常场景下的客户端资源释放:
    极少数情况下,CosmosClient在遇到严重网络异常或内部资源耗尽时,可能会自动释放内部资源,但这种情况通常会伴随更明确的错误信息,不属于常见场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:45:20