如何在.Net 6 WebAPI中集成并使用CosmosDB?
.NET 6 WebAPI 注入 Cosmos DB 客户端问题解答
首先明确:存在官方原生支持的客户端注入方案,无需自行封装基础客户端即可实现跨服务复用,具体说明如下:
- 官方提供的注入扩展方法为
AddCosmosClient,并非你提到的AddCosmos(),你需要先安装官方NuGet包Microsoft.Azure.Cosmos - 基础注入操作非常简单,直接在
Program.cs中调用即可:
builder.Services.AddCosmosClient( accountEndpoint: "你的Cosmos DB服务端点", authKeyOrResourceToken: "你的认证密钥" );
- 注入完成后,你可以在任意自定义服务的构造函数中直接注入
CosmosClient实例使用,官方已经默认将该实例注册为单例生命周期,完全符合跨服务复用的最佳实践,不需要自行处理客户端的生命周期管控。
如果你需要对数据库、容器操作做业务抽象,或者方便后续做单元测试,也可以自行封装带接口的自定义Cosmos服务,在自定义服务的构造函数中注入官方提供的
CosmosClient即可,该封装属于可选优化项而非必须项。
常用扩展配置说明
如果需要自定义客户端规则,比如序列化策略、连接超时配置,可使用方法重载:
builder.Services.AddCosmosClient( connectionString: "你的Cosmos DB连接字符串", clientOptions: new CosmosClientOptions { SerializerOptions = new CosmosSerializationOptions { PropertyNamingPolicy = CosmosPropertyNamingPolicy.CamelCase }, RequestTimeout = TimeSpan.FromSeconds(30) });
内容的提问来源于stack exchange,提问作者Gerrit
相关产品推荐
相关产品推荐

