如何在Windows Azure中创建队列?

时间:2013-08-03 11:44:26

标签: azure azure-queues

我使用下面的代码来创建队列,使用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
});

enter image description here

2 个答案:

答案 0 :(得分:3)

在我意识到问题之前,我已经尝试了几次代码。您正在使用SharedSecretTokenProviderACS认为它有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输入,您应该开展业务。