如何将 DefaultAzureCredentialOptions 与 ServiceBus 触发器结合使用?

问题描述 投票:0回答:1

使用 ServiceBus 触发器时是否可以通过编程方式进行连接,或者是否仅限于使用连接字符串?或者有没有办法在连接字符串中指定您想要如何连接?

我们在部署时使用托管身份,在本地运行时通常使用 VS 或 VS Code 信用。我的问题是双重的。一个是连接的性能不太好,然后在经历一系列身份验证方法时会产生大量噪音,直到找到可以产生如下无用日志的方法:

我知道如何禁用这些错误的输出,但是如果我需要连接的凭据实际上存在错误,我将不会收到消息。如果有一种方法可以让这些静音,但如果没有任何连接,仍然会出现最终错误,那就是一点点的改进。

如果有一种方法可以让我准确指定我想要的连接方式,那就更好了。如果我手动建立连接,我认为我可以使用

DefaultAzureCredentialOptions
来完成此操作,但我不知道如何通过仅使用配置中的连接字符串的触发器来利用此功能,我认为该触发器不允许指定任何我想使用的方法。

authentication triggers connection-string azureservicebus
1个回答
0
投票

Azure 客户端和关联的凭据通过依赖项注入注入到 Function 应用程序中。您需要编写一个 Function 启动类来参与 DI 配置。 (请参阅:在 .NET Azure Functions 中使用依赖项注入

到达那里后,您可以使用 Azure 扩展来覆盖根据您的需要配置的默认凭据。例如,配置

DefaultAzureCredential
的选项将类似于:

using Azure.Identity;
using Microsoft.Extensions.Azure;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]

namespace MyNamespace;

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        services.AddAzureClients(azureBuilder => 
        {
            var options = new DefaultAzureCredentialOptions
            {
                ExcludeManagedIdentityCredential = true
            };

            // Configure a new credential to be used by default
            // for all clients that require TokenCredential.

            builder.UseCredential(new DefaultAzureCredential(options));
        });
    }
}

这还允许您创建不同的凭证类型,例如仅包含用于本地开发场景的 VS 和 VSCode 的链式凭证。

有关在 DI 中配置 Azure 客户端的更多信息和示例,请参阅:使用 Azure SDK for .NET 进行依赖注入

© www.soinside.com 2019 - 2024. All rights reserved.