Ошибка New-AzureSBAuthorizationRule при создании авторизации для очереди служебной шины
Я использую New-AzureSBAuthorizationRule для создания новой политики общего доступа для очереди шины обслуживания Azure. Смотрите команду ниже...
New-AzureSBAuthorizationRule -EntityName abcdef -EntityType Queue -Permission Listen -Name "abcdef_reader" -Namespace abcdefnamespace
Но каждый раз, когда я запускаю это, я получаю ошибку ниже:
New-AzureSBAuthorizationRule : Object reference not set to an instance of an object.
At line:1 char:1
+ New-AzureSBAuthorizationRule -EntityName abcdef -EntityType Queue -Permission ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [New-AzureSBAuthorizationRule], NullReferenceException
+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceBus.NewAzureSBAuthorizationRuleCommand
Я могу запускать New-AzureSBAuthorizationRule без проблем, если я отбрасываю EntityName и EntityType, т.е. создаю политики для служебной шины, а не для очереди.
Что я делаю неправильно?
2 ответа
Я получаю ту же ошибку и использую
function Create-AzureSBAuthorisationTopic
{
param
([Parameter (Mandatory = $true)]
[string] $Namespace,
[Parameter (Mandatory = $true)]
[string] $TopicName,
[Parameter (Mandatory = $true)]
[string]$RuleName,
[switch]$CanManage,
[switch]$CanListen,
[switch]$CanSend
)
$NamespaceManager = [Microsoft.ServiceBus.NamespaceManager]::CreateFromConnectionString($CurrentNamespace.ConnectionString);
$newkey = [Microsoft.ServiceBus.Messaging.SharedAccessAuthorizationRule]::GenerateRandomKey()
#Strongly Typed Array
[Microsoft.ServiceBus.Messaging.AccessRights[]]$AccessRights =
New-Object -TypeName "System.Collections.Generic.List[Microsoft.ServiceBus.Messaging.AccessRights]" ;
if ($CanManage)
{
$AccessRights += [Microsoft.ServiceBus.Messaging.AccessRights]::Manage;
}
if ($CanListen)
{
$AccessRights += [Microsoft.ServiceBus.Messaging.AccessRights]::Listen;
}
if ($CanSend)
{
$AccessRights += [Microsoft.ServiceBus.Messaging.AccessRights]::Send;
}
$AuthorizationRule = [Microsoft.ServiceBus.Messaging.SharedAccessAuthorizationRule]::new($RuleName,$newkey, $accessRights)
$AuthorizationRule
$topic = $NamespaceManager.GetTopic($TopicName)
$topic.Authorization.Add($AuthorizationRule)
$NamespaceManager.UpdateTopic($topic)
}
Вы можете изменить код, чтобы установить разрешения для очередей, заменив тему на очередь:-)
Возможно, вам не хватает синтаксиса вокруг параметра -Permission? Вот пример командной строки PS на MSDN:
C: \ PS> New-AzureSBAuthorizationRule -Name MyRule -Namespace MyNamespace -Permission $ ("Manage", "Listen", "Send") -EntityName MyEntity -EntityType Queue -PrimaryKey P + lL / Mnd2Z9sj5hrFHRDD
Похоже, ваш параметр должен быть -Permission $("Listen")
Пожалуйста, дайте нам знать, если это поможет.
С уважением, Сет Манхейм Лазурный Док Команда