Создав концентратор событий, я применяю правила. Могу ли я применить, например, правила отправки и прослушивания к одной и той же политике общего доступа?
Код, который я пытаюсь использовать, кажется, «перезаписывает» предыдущее правило. Есть ли лучший способ сделать это?
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, но это не сработало и выдало ту же ошибку.