Функция ссылки на объект Azure Environment.GetEnvironmentVariable на портале Azure - PullRequest
0 голосов
/ 21 декабря 2018

Я опубликовал свое приложение в функции Azure с помощью Visual Studio 2017. Поскольку строка подключения из переменной Environment всегда равна нулю, в журналах появляется ошибка ссылки на объект, однако приложение просто отлично работает в локальном режиме.Ниже приведен фрагмент кода, в котором я получаю строку подключения и регистрирую ее.

var helper = new Helper();

log.LogInformation($ "The connection string is {helper.GetConnectionString()}");

if (string.IsNullOrWhiteSpace(helper.GetConnectionString())) return req.CreateErrorResponse(HttpStatusCode.BadRequest, "Connection is null");

var signalRService = new SignalRService(helper.GetConnectionString(), helper.GetIotHubName(), log);
log.LogInformation("SignalRService has been initialized");

await signalRService.SendRequest(helper.GetIotHubName(), data?.ToString());
log.LogInformation("SignalRService has been invoked successfully");

return req.CreateResponse(HttpStatusCode.OK, "Success");

Ниже приведен класс помощника

public class Helper {
    private static readonly string connectionStringName = "AzureSignalRConnectionString";
    private static readonly string iotHubName = "iotHubName";

    public string GetConnectionString() {
        return Environment.GetEnvironmentVariable(connectionStringName, EnvironmentVariableTarget.Process);
    }
    public string GetIotHubName() {
        return Environment.GetEnvironmentVariable(iotHubName, EnvironmentVariableTarget.Process);
    }
}

Когда я наблюдаю за своей функцией на портале, я могу четкоувидеть, что строка подключения является нулевой.Я уже дал строку подключения в local.settings.json.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "iotHubName": "iot-hub",
    "AzureSignalRConnectionString": "connection string value",
    "MSDEPLOY_RENAME_LOCKED_FILES": 1
  },
  "Host": {
    "LocalHttpPort": 5181,
    "CORS": "*"
  }
}

Я не уверен, что мне здесь не хватает.Любая помощь очень ценится.

1 Ответ

0 голосов
/ 21 декабря 2018

Я понял, чего мне здесь не хватает.Когда дело доходит до переменной Environment, добавление их только в local.settings.json не поможет.Когда я вошел в свою функцию Azure и проверил настройки приложения, я не смог найти настройки, которые я задал в своем файле local.settings.json.Я сделал следующие шаги:

  1. Открыл настройки публикации в Visual Studio
  2. Нажал на Управление настройками приложения, я пропустил значения в удаленных полях для обеих переменных среды,enter image description here
  3. Добавьте значения в удаленные поля.
  4. Перестройте и опубликуйте приложение функции
  5. Войдите в портал Azure и убедитесь, чтозначения находятся под настройками приложения.

enter image description here

...