You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨Azure订阅访问Service Bus:无需切换账号的DefaultAzureCredential替代方案

无需切换账号访问不同Azure订阅的Service Bus解决方案

一、无需切换Visual Studio账号的直接方案

你可以通过为DefaultAzureCredential指定目标租户ID,让它针对个人订阅所属的Azure AD租户进行身份验证,无需切换VS当前登录的工作账号。具体操作如下:

  1. 登录Azure门户,找到个人订阅对应的Azure AD租户ID(路径:Azure Active Directory > 概述 > 租户ID)。
  2. 修改DefaultAzureCredential的初始化代码,通过DefaultAzureCredentialOptions指定租户ID,这样凭据会优先尝试在指定租户范围内验证你的个人账号权限(只要你的个人账号对该Service Bus有发送权限即可)。

修改后的示例代码:

ServiceBusClient client;
ServiceBusSender sender;

const int 消息数量 = 3;
var 客户端配置 = new ServiceBusClientOptions
{
    TransportType = ServiceBusTransportType.AmqpWebSockets
};

// 指定个人订阅的租户ID
var 凭据配置 = new DefaultAzureCredentialOptions
{
    TenantId = "你的个人租户ID"
};

client = new ServiceBusClient("asb-test.servicebus.windows.net",
            new DefaultAzureCredential(凭据配置),
            客户端配置);

sender = client.CreateSender("email");

using ServiceBusMessageBatch 消息批次 = await sender.CreateMessageBatchAsync();

var 添加结果 = 消息批次.TryAddMessage(new ServiceBusMessage($"测试消息"));

if (!添加结果)
{
    throw new Exception($"消息过大,无法加入批次。");
}

try
{
    await sender.SendMessagesAsync(消息批次);
    Console.WriteLine($"已向队列发送包含{消息数量}条消息的批次。");
}
finally
{
     await sender.DisposeAsync();
     await client.DisposeAsync();
}

二、DefaultAzureCredential的替代选项

1. 使用Service Bus连接字符串

直接使用Service Bus的共享访问连接字符串进行身份验证,无需依赖Azure AD。你可以在Azure门户的Service Bus资源 > 共享访问策略中,创建一个仅拥有发送权限的自定义策略,然后获取对应的连接字符串。

代码示例:

// 替换为你的Service Bus连接字符串
var 连接字符串 = "Endpoint=sb://asb-test.servicebus.windows.net/;SharedAccessKeyName=你的发送策略名;SharedAccessKey=你的密钥";
client = new ServiceBusClient(连接字符串, 客户端配置);

2. 使用ClientSecretCredential(服务主体)

在个人Azure租户中创建一个服务主体,并为其分配Service Bus的发送权限,然后通过服务主体的客户端ID、客户端密钥和租户ID构建ClientSecretCredential进行验证。

代码示例:

var 租户ID = "你的个人租户ID";
var 客户端ID = "服务主体的客户端ID";
var 客户端密钥 = "服务主体的客户端密钥";

var 凭据 = new ClientSecretCredential(租户ID, 客户端ID, 客户端密钥);
client = new ServiceBusClient("asb-test.servicebus.windows.net", 凭据, 客户端配置);

3. 使用AzureCliCredential(不推荐,因需CLI登录)

通过Azure CLI登录个人账号后,使用AzureCliCredential获取凭据,但这需要你在本地CLI中切换到个人账号,不符合你“无需配置CLI”的需求,仅作为参考选项。

内容的提问来源于stack exchange,提问作者Ayesh Nipun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 21:40:20