Я опубликовал свое приложение в функции 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": "*"
}
}
Я не уверен, что мне здесь не хватает.Любая помощь очень ценится.