Как создать очередь в Windows Azure?

Я использую приведенный ниже код для создания очереди, используя SharedSecretTokenProvider. Однако я не могу предоставить правильные значения значений managerName и managerKey из портала Windows Azure.

Это приводит к исключению Http 401 Unauthorized. Как устранить эту ошибку?

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
});

введите здесь описание изображения


person Abhijeet    schedule 03.08.2013    source источник


Ответы (2)


Я пробовал это пару раз с вашим кодом, прежде чем понял проблему. Вы используете SharedSecretTokenProvider, который перейдет к ACS, думая, что у него есть issuer and a key. Поскольку вы пытаетесь использовать SAS, вместо этого вы захотите использовать CreateSharedAccessSignatureTokenProvider.

Поменяйте это местами и укажите ключ и имя ключа, и все будет хорошо.

Кроме того, Viperguynaz прав, вы также должны использовать «sb» вместо http. Прежде чем он достиг этого, он не работал, потому что поставщик токенов правильно отклонял ваш доступ, поскольку он не понимал ключ и имя ключа, которые вы передавали для того, что, по его мнению, было эмитентом и ключом, которые использует ACS.

person MikeWo    schedule 14.08.2013

Начните с метода ServiceBusEnvironment.CreateServiceUri. Обратите внимание, что URI конечных точек служебной шины должны всегда использовать протокол «sb://»; например sb://contoso.servicebus.windows.net/helloservicebus.

Uri address = ServiceBusEnvironment.CreateServiceUri("sb", "contoso", "helloservicebus");

Настройте свои входы URI правильно, и вы должны быть в бизнесе.

person viperguynaz    schedule 03.08.2013