Невозможно прочитать строку подключения Azure SignalR из параметров приложения конфигурации службы приложений Azure

Я работаю над приложением Azure SignalR, и все работает нормально на моем локальном компьютере, когда я устанавливаю следующий раздел в своем appsettings.json:

 "Azure": {
    "SignalR": {
      "ConnectionString": "XXXXX"
    }
  }

И затем инициализируем в моем startup.cs следующим образом:

services.AddSignalR().AddAzureSignalR();

Однако когда я создаю ту же переменную среды в своей службе приложений Azure с помощью службы приложений ›Конфигурация› ApplicationSettings: < img src = "https://i.stack.imgur.com/ACGsX.png" alt = "введите описание изображения здесь" />

Мое приложение не запускается, и я получаю следующую ошибку приложения:

System.ArgumentException: Connection string missing required properties endpoint and accesskey. (Parameter 'connectionString')
   at Microsoft.Azure.SignalR.ConnectionStringParser.Parse(String connectionString)
   at Microsoft.Azure.SignalR.ServiceEndpoint..ctor(String connectionString, EndpointType type, String name)

Когда я закрепляю строку подключения на параметре строки подключения AddAzureSignalR () и развертываю, все работает нормально.

Казалось бы, azuresignalR не может получить эту переменную среды, несмотря на то, что также может видеть ее на странице Kudo Appsettings как Azure: SginalR: ConnectionString.


person Josh L    schedule 02.11.2020    source источник


Ответы (2)


Тебе нужно инициировать вот так,

 string azureSignalrConnectionString = configuration["Azure:SignalR:ConnectionString"];
 services.AddSignalR().AddNewtonsoftJsonProtocol().AddAzureSignalR(options =>
 {
        options.ConnectionString = azureSignalrConnectionString;
 });
person Sajeetharan    schedule 02.11.2020
comment
Пытался, но безуспешно ... Не понимаю. Кажется, он хочет только прочитать его из appsettings.json, а не из настроек приложения - person Josh L; 03.11.2020

Так что я задал тот же вопрос на странице github Azure SignalR и получил ответ ниже:

EnvironmentVariablesConfigurationProvider автоматически заменяет __ на:. Поэтому, когда вы настраиваете строку подключения с помощью переменных среды, вы должны использовать Azure__SignalR__ConnectionString в качестве ключа. Когда вы настраиваете его через файл JSON, вы должны использовать ключ источника Azure: SignalR: ConnectionString.

Как только я изменил его на двойное подчеркивание, все заработало

person Josh L    schedule 09.11.2020