以编程方式创建Azure Service Bus队列共享访问策略

Nei*_*eil 8 c# azureservicebus

我已经实现了Azure Service Bus REST API客户端.目前我正在为我的REST项目构建xUnit测试,并且需要创建一个具有测试提供的名称的Queue,使用REST客户端发送消息,然后删除具有该特定名称的Queue.

我的一个要求是为新创建的Queue指定一个只有编程方式的发送权限的共享访问策略,但是我在网上找不到任何表明这是可能的.

到目前为止,我有这个

TokenProvider credentials = TokenProvider.CreateSharedAccessSignatureTokenProvider("MyBusAccessPolicy", "XXXXXXXXXXXXXXXX");
NamespaceManager namespaceManager = new NamespaceManager(ServiceBusEnvironment.CreateServiceUri("sb", _serviceNamespace, string.Empty), credentials);
QueueDescription queueDescription =  await namespaceManager.CreateQueueAsync(queueName);
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我将如何继续专门为该队列创建共享访问策略?

小智 7

尼尔,

这样的事情应该有效:

string queuePolicyName = "SendPolicy";
string queuePrimaryKey = SharedAccessAuthorizationRule.GenerateRandomKey();

QueueDescription queueDescription = new QueueDescription(queueName);
SharedAccessAuthorizationRule queueSharedAccessPolicy = new SharedAccessAuthorizationRule(queuePolicyName, queuePrimaryKey, new[] { AccessRights.Send });
queueDescription.Authorization.Add(queueSharedAccessPolicy);

await _namespaceManager.CreateQueueAsync(queueDescription);
Run Code Online (Sandbox Code Playgroud)