azure BlobServiceClient单例?

fv2wmkja  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(100)

我正在添加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());


我对微软的不同符号感到有点惊讶。

1tu0hz3e

1tu0hz3e1#

您可以使用单例生存期。您给予的TokenCredential由Azure SDK在其HTTP管道中使用,因此它将在需要时通过该管道获得新的访问令牌。存储服务是单例并不重要。

h22fl7wq

h22fl7wq2#

DefaultAzureCredential获取一个token并将其缓存在credentials示例中。Token的生命周期和刷新都是自动处理的,所以你不需要担心这些。
建议在整个应用程序生命周期中使用reuse Azure SDK clients,因此应将它们注册为单例。

相关问题