【发布时间】:2019-10-15 07:25:01
【问题描述】:
我在 Microsoft Docs 上阅读了一篇关于使用 dependency injection in .NET Azure Functions 的文章。
一切正常,正如您在文章中看到的那样,它注册了 CosmosClient
builder.Services.AddSingleton((s) => {
return new CosmosClient(Environment.GetEnvironmentVariable("COSMOSDB_CONNECTIONSTRING"));
});
问题是,如何在我的函数中使用 Cosmos Client? 我不想每次都创建 Cosmos Client 实例。
public class CosmosDbFunction
{
public CosmosDbFunction()
{
}
[FunctionName("CosmosDbFunction")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
// TODO: do something later
return null;
}
}
【问题讨论】:
-
通过构造函数或 Run 将其注入函数,就像使用 log 一样
-
问题是没有ICosmosClient。
-
然后创建您自己的服务抽象来包装实现并公开所需的功能。
-
另外,如果 cosmos 客户端作为单例添加,那么它应该只创建一次
标签: azure dependency-injection azure-functions azure-cosmosdb