当我使用Service Bus MessagingFactory时,为什么会出现UnauthorizedAccessException?

时间:2014-07-14 11:43:52

标签: servicebus

我已通过证书配置授权。当我使用NamespaceManager来GetSubscription工作正常,但是当我尝试从MessagingFactory执行任何方法时,我收到System.UnauthorizedAccessException。

string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");

var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
SubscriptionDescription subscriptionDescription = namespaceManager.GetSubscription("testTopic", "testSubscription"); // executed properly

var messagingFactory = MessagingFactory.CreateFromConnectionString(connectionString);
var exist = namespaceManager.TopicExists("TestTopic"); // throws exception

堆栈追踪:

System.UnauthorizedAccessException was unhandled
  HResult=-2147024891
  Message=The remote server returned an error: (401) Unauthorized. Authorization failed for specified action: Manage..TrackingId:d8648c5a-5185-41c8-b787-72332403b7d9_*******,TimeStamp:2014-07-14 08:34:22
  Source=Microsoft.ServiceBus

问题是什么?

2 个答案:

答案 0 :(得分:1)

要使用NamespaceManager,您必须位于Service Bus命名空间中的ManageUsers中。要将用户添加到现有命名空间,您可以使用ps Set-SBNamespace

答案 1 :(得分:1)

您必须位于Service Bus命名空间中的ManageUsers列表中,并具有授权规则,该规则为您提供了获取订阅主题的管理权限。