以编程方式更新azure服务总线队列共享访问策略

时间:2017-02-28 12:29:11

标签: azure azureservicebus

我想以编程方式更改队列访问规则(在我们的例子中是服务总线)的主键和辅助键(我们希望每天重新生成一次主键)。 我想在已经创建之后对现有队列执行此操作。 我知道这可以从Azure门户网站(通过点击策略窗口的“Regen prim key”和“Regen sec key”)完成,但我没有设法从我的.Net代码中执行此操作。

我的代码如下:

SharedAccessAuthorizationRule rule;
            if (!queueDescription.Authorization.TryGetSharedAccessAuthorizationRule(ruleName, out rule))
            {
                // error
            }

            rule.SecondaryKey = rule.PrimaryKey;
            rule.PrimaryKey = SharedAccessAuthorizationRule.GenerateRandomKey();

在此代码之后,规则不会更改.....

还有其他办法吗??

由于

1 个答案:

答案 0 :(得分:1)

  

我知道这可以从Azure门户网站(通过点击策略窗口的“Regen prim key”和“Regen sec key”)完成,但我没有设法从我的.Net代码中执行此操作。 / p>

重新生成/重置授权规则的PrimaryKey后,请尝试调用UpdateQueue(QueueDescription) method来更新队列。您可以参考以下示例代码。

string connectionString = "Endpoint=sb://fehanservicebustest.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey={accesskey}";
string queueName = "{queuename}";

var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);


QueueDescription queueDescription = namespaceManager.GetQueue(queueName);

SharedAccessAuthorizationRule rule;

queueDescription.Authorization.TryGetSharedAccessAuthorizationRule("fehanlistenpolicy", out rule);

string newkey = SharedAccessAuthorizationRule.GenerateRandomKey();
rule.PrimaryKey = newkey;

namespaceManager.UpdateQueue(queueDescription);