我想以编程方式更改队列访问规则(在我们的例子中是服务总线)的主键和辅助键(我们希望每天重新生成一次主键)。 我想在已经创建之后对现有队列执行此操作。 我知道这可以从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();
在此代码之后,规则不会更改.....
还有其他办法吗??
由于
答案 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);