我正在添加Blob存储,同时我正在学习本教程:https://www.learmoreseekmore.com/2022/11/dotnet7-webapi-azure-blob-storage-file-management-example.html
这件作品:
builder.Services.AddScoped(_ =>
{
return new BlobServiceClient(builder.Configuration.GetConnectionString("AzureStorage"));
});
字符串
如果我从访问键使用connectingstring,它每次都非常快。响应时间大约为15毫秒。当我回到DefaultAzureCredentials
时,响应时间大约为40秒。不是很用户友好;)
如果我按照微软的这篇文章:https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication/?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=command-line
它说,
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
型
我的问题是关于这种单例使用;由DefaultAzureCredential
管理的这种身份验证会给我给予一些时间错误吗?(顺便说一句:在15毫秒内响应!)并且没有与AzureKeyVault
使用相同的过载:
它指出:
builder.Configuration.AddAzureKeyVault(
new Uri(builder.Configuration["KeyVaultAddress"]),
new DefaultAzureCredential());
型
我对微软的不同符号感到有点惊讶。
2条答案
按热度按时间1tu0hz3e1#
您可以使用单例生存期。您给予的TokenCredential由Azure SDK在其HTTP管道中使用,因此它将在需要时通过该管道获得新的访问令牌。存储服务是单例并不重要。
h22fl7wq2#
DefaultAzureCredential
获取一个token并将其缓存在credentials示例中。Token的生命周期和刷新都是自动处理的,所以你不需要担心这些。建议在整个应用程序生命周期中使用reuse Azure SDK clients,因此应将它们注册为单例。