Можете ли вы добавить больше правил концентратора событий в политику общего доступа, чем одно? - PullRequest
0 голосов
/ 06 ноября 2019

После создания концентратора событий я применяю правила. Могу ли я, например, применить правило Send и Listen к одной и той же политике общего доступа?

Код, который я пытаюсь использовать, кажется, «перезаписывает» предыдущее правило. Есть ли лучший способ, которым я должен делать это?

await eventHub.Update()
   .WithNewSendRule(sendListenRuleNames)
   .WithNewListenRule(sendListenRuleNames)
   .ApplyAsync();

Приведенный выше код в конечном итоге будет применять только правило прослушивания к политике общего доступа.

ОБНОВЛЕНИЕ

Попробовав описанный выше способ, я попытался реализовать, используя комментарий Джея, подобный следующему:

List<AccessRights> accessRights = new List<AccessRights>();
accessRights.Add(AccessRights.Listen);
accessRights.Add(AccessRights.Manage);

foreach (var listenManageRuleNames in list)
{
   await eventHub.Manager
      .EventHubAuthorizationRules
      .Inner
.CreateOrUpdateAuthorizationRuleWithHttpMessagesAsync(eventHubResource.ResourceGroup.Name, eventHubNamespace.Name, eventHubResource.Name, listenManageRuleNames, accessRights);
}

Но в итоге это выдает мне эту ошибку:

"{\"error\":{\"message\":\"Error setting value to 'Rights' on 'Microsoft.Cloud.ServiceBus.ResourceProvider.ArmVersionedEntities.ArmAuthorizationRuleDescription'. \",\"code\":\"BadRequest\"}}"

ОБНОВЛЕНИЕ 2 Я только попытался сделать только AccessRights.Listen, и это сработало. Сразу после этого я попытался сделать только AccessRights.Manage, и он не сработал, и выдал ту же ошибку.

1 Ответ

0 голосов
/ 07 ноября 2019

Найден метод!

List<AccessRights> accessRights = new LinkedList<>();
        accessRights.add(AccessRights.LISTEN);
        accessRights.add(AccessRights.SEND);

azure.eventHubNamespaces().authorizationRules()
                    .manager()
                    .namespaceAuthorizationRules()
                    .inner()
                  .createOrUpdateAuthorizationRule("resourceGroup","namespace","policyname",accessRights);

Получите подсказки от имени метода REST API и попытались найти похожие имена в исходном коде.

...