我使用下面的代码来创建队列,使用SharedSecretTokenProvider
。但是,我无法提供managerName
&的正确值。 {az}门户网站的managerKey
值表单。
这会导致Http 401
未经授权的异常。如何解决此错误?
const string queueName = "thequeue";
var tokenProvider = TokenProvider.CreateSharedSecretTokenProvider(
ConfigurationManager.AppSettings["managerName"],
ConfigurationManager.AppSettings["managerKey"]);
Uri uri = ServiceBusEnvironment.CreateServiceUri("http", "MyNamespace" , string.Empty);
NamespaceManager namespaceManager = new NamespaceManager(uri, tokenProvider);
QueueDescription qd = namespaceManager.CreateQueue(new QueueDescription(queueName)
{
DefaultMessageTimeToLive = TimeSpan.FromMinutes(15),
DuplicateDetectionHistoryTimeWindow = TimeSpan.FromMinutes(10),
LockDuration = TimeSpan.FromMinutes(2),
EnableBatchedOperations = true,
EnableDeadLetteringOnMessageExpiration = true,
RequiresDuplicateDetection = true
});
答案 0 :(得分:3)
在我意识到问题之前,我已经尝试了几次代码。您正在使用SharedSecretTokenProvider
,ACS
认为它有issuer and a key
。由于您尝试使用SAS
,因此您需要使用CreateSharedAccessSignatureTokenProvider
。
将其交换并提供密钥和keyName,你应该很好。
另外,Viperguynaz是正确的,你应该使用“sb”代替http。它在到达那里之前就失败了,因为令牌提供程序正在拒绝您访问,因为它不理解您为其认为是ACS使用的颁发者和密钥所传递的密钥和密钥名称。
答案 1 :(得分:1)
从ServiceBusEnvironment.CreateServiceUri Method开始。请注意,Service Bus端点URI 必须始终使用“sb://”协议;例如sb://contoso.servicebus.windows.net/helloservicebus。
Uri address = ServiceBusEnvironment.CreateServiceUri("sb", "contoso", "helloservicebus");
正确设置您的URI输入,您应该开展业务。