Как получить доступ к Microsoft.ServiceBus.NamespaceManager или экземпляру QueueDescription в функции Azure версии 2.0 - PullRequest
0 голосов
/ 03 июля 2019

У меня есть функция Azure, запускаемая очередью служебной шины. У меня есть доступ к сообщению, но я также пытаюсь получить доступ к информации об очереди, используя экземпляр Microsoft.ServiceBus.QueueDescription; Однако у меня возникают трудности с использованием пространства имен Microsoft.ServiceBus в функции Azure. Я изначально получил ошибку

Microsoft.ServiceBus: The type initializer for
'Microsoft.ServiceBus.Messaging.Constants' threw an exception. Microsoft.ServiceBus: 
Could not load file or assembly 
'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 
The system cannot find the file specified. System.Private.CoreLib: Could not load the specified file.

Итак, я добавил в проект все библиотеки для System.ServiceModel; однако аналогичная проблема возникла при тестировании, где отсутствующая зависимость не могла быть найдена.

Должен ли я использовать другой способ получить экземпляр QueueDescription для очереди, запускающей конвейер функции? У меня есть следующие библиотеки в проекте на данный момент

Microsoft.Azure.WebJobs.Extensions.ServiceBus (3.0.4)
WindowsAzure.ServiceBus (5.2.0)

Есть какие-нибудь идеи, если какая-либо из включенных библиотек служебной шины имеет возможность получить доступ к экземпляру QueueDescription?

Спасибо

1 Ответ

0 голосов
/ 04 июля 2019

Поскольку NamespaceManager больше не поддерживается пакетом, совместимым с .NET Core Microsoft.Azure.ServiceBus (который является зависимостью Microsoft.Azure.WebJobs.Extensions.ServiceBus при использовании служебной шины в WebJobs или Functions), необходимо использовать пакет Microsoft.Azure.Management.ServiceBus.Fluent и аффилированные лица.

Я сделал это в своих функциях с управляемой идентификацией, но AzureCredentialsFactory также поддерживает другие формы аутентификации:

...
    // some magic that determines subscriptionId, resourceGroupName & sbNamespaceName
...
    var credentials = SdkContext.AzureCredentialsFactory.FromMSI(new MSILoginInformation(MSIResourceType.VirtualMachine), AzureEnvironment.AzureGlobalCloud);
    var azure = Azure
            .Configure()
            .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
            .Authenticate(credentials)
            .WithSubscription(subscriptionId);

    var sbNamespace = azure.ServiceBusNamespaces.GetByResourceGroup(resourceGroupName, sbNamespaceName);
    var queues = sbNamespace.Queues.List();
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...