在 netstandard2 项目中使用 Azure.Messaging.ServiceBus 和 SAS 令牌

Using Azure.Messaging.ServiceBus with SAS token in netstandard2 project

Microsoft.Azure.ServiceBus 包允许通过 SAS 令牌连接到 Azure。 Microsoft 建议改用较新的软件包 Azure.Messaging.ServiceBus

但我找不到借助 SAS 令牌创建 ServiceBusClient 的方法。

有没有一种方法可以使用 SAS 令牌创建 ServiceBusClient,如果可以,如何创建。如果不是:通过 SAS 令牌连接到 Azure 的推荐方法是什么?我必须使用过时的 Microsoft.Azure.ServiceBus 包吗?还有一个名为 WindowsAzure.ServiceBus 的第三个包,但似乎这个包需要一个 .NET Framework 项目并且不能与 .NET Standard 一起使用?

注意:我们无法通过 Azure.Identity 使用身份验证,因为应该访问服务总线的用户不属于我们的 Azure AD,而且永远不会。

提前致谢。

通过将 SAS 令牌添加到连接字符串,使用模式 SharedAccessSignature=<<SAS>>; 并删除 SharedAccessKey 和 [=14=,可以将 SAS 令牌与 ServiceBusClient 一起使用] 门户填充的标记。

在 7.2.x-beta 行中,还可以使用接受 AzureSasCredential:

的构造函数指定 SAS 令牌
var credential = new AzureSasCredential("<< YOUR SAS TOKEN >>");

var fullyQualifiedNamespace = 
    "<< NAMESPACE (likely similar to {your-namespace}.servicebus.windows.net) >>";

await using var client = new ServiceBusClient(fullyQualifiedNamespace, credential);

如果您能够使用测试版,我建议您使用凭据,因为它允许您在不创建新客户端的情况下更新 SAS 令牌,连接字符串方法不支持。

关于库,Azure.Messaging.ServiceBus 是当前这一代,我们建议在您提到的两个遗留库上使用它。