【发布时间】: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