Почему моя строка подключения RootManageSharedAccessKey недействительна?
Код:
При выполнении приведенного ниже кода я получаю сообщение об ошибке о неверной строке подключения:
serviceBusClient <- new ServiceBusClient(connectionString)
Ошибка:
System.NotImplementedException: «Метод или операция не реализовано.
System.ArgumentException: 'Строка подключения, используемая для службы Клиент шины должен указать узел пространства имен служебной шины и либо Общий ключ доступа (имя и значение) ИЛИ общий доступ Подпись должна быть действительной. Имя параметра: connectionString'
Строка подключения:
"Endpoint=sb://myNameSpace.servicebus.windows.net/;TransportType=AmqpWebSockets;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=******************************************* = "
Я также попытался удалить свойство TransportType из строки подключения:
"Endpoint=sb://myNameSpace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=******************************************* = "
Строка подключения была получена из политики общего доступа моего ресурса служебной шины:
Контекст:
Xamarin.Forms (Android)
Azure.Messaging.ServiceBus
NuGet-пакеты:
Azure.Messaging.ServiceBus (7.11.1) Xamarin.Forms (5.0.0.2545)
Интересно, проблема в том, что клиент является мобильным? В моем случае я пытаюсь запустить код на Xmarin.Android.
Синтаксический анализ строки подключения представляет собой простое разрезание строки. Не исключаю, но маловероятно. Завтра я попытаюсь воспроизвести проект Xamarin. Что мне интересно выше, так это NotImplementedException
, который находится в ваших деталях ошибки выше. Похоже, это может быть связано с платформой, хотя, вероятно, не с парсером. У вас случайно нет трассировки стека для этого, которым вы можете поделиться?
Если вам интересно узнать подробности, синтаксический анализ строки подключения происходит здесь: github.com/Azure/azure-sdk-for-net/blob/main/sdk/servicebus/…
@JesseSquire — в System.Diagnostics.Tracing.EventSource.GetSources () [0x00000] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/ System.Diagnostics.Tracing/EventSource.cs:318 в Azure.Core.Diagnostics.AzureEventSource.DeduplicateName (System.String eventSourceName) [0x00010] в <287460e758c24a47ba03a248ab1a62d9>:0
Спасибо. Можете ли вы также подтвердить версии пакетов для меня? Ошибка источника события выглядит очень знакомой и похоже на ту, что была исправлена год назад. (я вижу, вы участвовали в обсуждении) github.com/Azure/azure-sdk-for-net/issues/24055
@JesseSquire — Azure.Messaging.ServiceBus 7.11.1, Xamarin.Forms 5.0.0.2545
Давайте продолжим обсуждение в чате.
Для тех, кому это может быть интересно, основной причиной этого оказалось то, что строка подключения, переданная в ServiceBusClient
, была закодирована в формате JSON, что привело к внедрению двух литералов кавычек. В результате отсутствовал токен Endpoint=
(был "Endpoint=
), из-за чего клиент не мог определить, к чему подключиться.
Оба приведенных выше примера строки подключения правильно сформированы и допустимы для использования. Я могу использовать их для создания
ServiceBusClient
и анализа с помощьюServiceBusConnectionStringProperties
как в C#, так и в F#. Маркер «TransportType» недействителен, но молча игнорируется.