【问题标题】:Access error trying to create Azure service bus queue尝试创建 Azure 服务总线队列时出现访问错误
【发布时间】:2016-12-07 23:58:38
【问题描述】:

我正在一个简单的控制台应用程序中运行以下代码,该应用程序安装了最新版本的 WindowsAzure.ServiceBus NuGet 包:

        var connectionString = "Endpoint=sb://<servername>/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<SharedAccessKey>";
        var queueName = "TestQueue";

        var ns = NamespaceManager.CreateFromConnectionString(connectionString);

        if (!ns.QueueExists(queueName))
            ns.CreateQueue(queueName);

并收到以下错误:

System.UnauthorizedAccessException was unhandled
  HResult=-2147024891
  Message=The remote server returned an error: (401) Unauthorized. InvalidSignature: The token has an invalid signature. TrackingId:<GUID>_G30, SystemTracker:<MyQueue>.servicebus.windows.net

我尝试了很多不同的方法来尝试修复它,包括删除和重新创建整个命名空间。我还验证了 SharedAccessKey 具有正确的声明(即管理)。

更新

早上回来继续排查这个问题后,它就莫名其妙地开始工作了,所以我猜问题已经变成了,这里发生了什么?代码没有改变。钥匙没变。 (困惑!)

【问题讨论】:

  • 我(几乎不)记得还有其他一些获取命名空间的方法,而不仅仅是通过一个连接字符串。尝试不同的方法时是否遇到同样的错误?
  • 我去看看。到目前为止,我们一直在使用这种方法,没有任何问题。
  • 根据我的经验,Azure 有时会出现向后兼容性问题。因此,在最新的库/服务中某些东西停止工作的情况可能并不常见,但会不时出现。
  • 刚刚用包版本3.4.3(最新)尝试了相同的代码,没问题。您的错误说签名无效,我认为共享访问密钥一定有问题。你从传送门得到字符串了吗?
  • @forester123 感谢您的尝试。是的,复制并粘贴字符串。我同意,该字符串必须以某种方式无效。我们已经尝试重新生成密钥并使用辅助密钥。似乎没有任何效果。

标签: c# azure azureservicebus


【解决方案1】:

TrackingId:&lt;GUID&gt;_G30 出现的错误表明网关 MSFT 支持团队应该能够提供帮助。命名空间管理操作是通过 HTTPS 进行的,我假设您已经打开了它,即没有任何东西阻止它。所以我敢打赌与 Azure 支持人员交谈,向他们提供TrackingId 以找出网关拒绝您的请求的原因。

【讨论】:

  • 这似乎是最有可能的答案,因为问题在一段时间后神奇地消失了。
猜你喜欢
  • 1970-01-01
  • 2015-06-02
  • 2017-02-14
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
相关资源
最近更新 更多