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

Update azure service bus queue shared access policy programmatically

我想以编程方式更改队列(在我们的例子中是服务总线)访问规则的主键和辅助键(我们想每天重新生成一次主键)。 我想在创建现有队列后对其执行此操作。 我知道这可以从 Azure 门户完成(通过单击策略 windows 的 "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();

此代码后,规则未更改.....

还有其他方法吗...?

谢谢

I know this can be done from the Azure portal (by clicking on the "Regen prim key" and "Regen sec key" of the policy windows) but I didn't manage to do it from my .Net code.

请尝试调用 UpdateQueue(QueueDescription) method 以在您 regenerate/reset 您的授权规则的主键之后更新队列。您可以参考下面的示例代码。

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);