Функция Azure не может прочитать настройки приложения и строки подключения - PullRequest
0 голосов
/ 24 октября 2018

Я создал функцию HTTP Trigger в Azure с надеждой на чтение данных из базы данных SQL Azure.Я настроил строку подключения в разделе «Строки подключения» в приложении «Функции», как показано на рисунке ниже

Connection String Error

Я использовал приведенный ниже код, чтобы попробовать и прочитатьстрока соединения.

var cnnString = ConfigurationManager.ConnectionStrings["TempleDataContext"].ConnectionString;

При выполнении я вижу в журналах следующую ошибку:

2018-10-24T18: 13: 56.385 [Информация] Скрипт для функции 'don1изменилось.Перегрузочный.2018-10-24T18: 13: 56.601 [Информация] Компиляция выполнена успешно.2018-10-24T18: 13: 58.511 [Информация] Выполнение 'Functions.donors1' (Reason = 'Эта функция была вызвана программно через хост-API.', Id = 8b140087-4b50-450e-829c-f7abd9e3a1eb) 2018-10-24T18: 13: 59.067 [Информация] Триггерная функция HTTP C # обработала запрос.2018-10-24T18: 13: 59.245 [Ошибка] Выполнено 'Functions.donors1' (Ошибка, Id = 8b140087-4b50-450e-829c-f7abd9e3a1eb) Ссылка на объект не установлена ​​для экземпляра объекта.

Я хотел проверить, что все возвращалось в объекте ConnectionStrings, и изменил код на

var cnnStrings = ConfigurationManager.ConnectionStrings;
    foreach(var c in cnnStrings)
    {
        log.LogInformation(c.ToString());
    }

Когда я проверяю журналы, это информация, которую я вижу.

2018-10-24T18: 16: 53.755 [Информация] Сценарий для функции «don1» изменен.Перегрузочный.2018-10-24T18: 16: 54.540 [Информация] Компиляция выполнена успешно.2018-10-24T18: 16: 55.917 [Информация] Выполнение 'Functions.donors1' (Reason = 'Эта функция была вызвана программно через хост-API.', Id = 508c49bf-d5e6-4a99-b1db-e1a79545fa91) 2018-10-24T18: 16: 56.063 [Информация] Триггерная функция C # HTTP обработала запрос.2018-10-24T18: 16: 56.070 Источник данных [Information] =. \ SQLEXPRESS; Интегрированная защита = SSPI; AttachDBFilename = | DataDirectory | aspnetdb.mdf; Экземпляр пользователя = true 2018-10-24T18: 16: 56.079 [Информация] выполнена'Functions.donors1' (Успешно, Id = 508c49bf-d5e6-4a99-b1db-e1a79545fa91)

Я не понимаю, откуда он получает информацию о ConnectionString.

Простопротестировать thoery Я также добавил несколько строк для чтения настроек приложения

var appSettings = ConfigurationManager.AppSettings;
foreach(var a in appSettings)
{
    log.LogInformation(a.ToString());
}

Он не отображал никакой информации для этих строк.

Я пишу функции Azure непосредственно на портале, используяC # Скрипт.Я что-то пропустил?Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

В функции v2 вы должны использовать Environment.GetEnvironmentVariable("string_name",EnvironmentVariableTarget.Process) для получения значений из настроек приложения и строк подключения.

Примечание для строк подключения:

при использовании вышеуказанного метода первый параметрзависит от типа.Это означает, что когда тип строки подключения равен SQLAZURE, то первым параметром должен быть SQLAZURE + "CONNSTR" + "_stringName".Снимок экрана выглядит следующим образом: enter image description here

Пример кода приведен ниже:

    //for connection string
    string connStr = Environment.GetEnvironmentVariable("SQLAZURECONNSTR_sqldb_connection",EnvironmentVariableTarget.Process);
    log.LogInformation("the connection string is: " + connStr);

    //for app settings
    string appStr = Environment.GetEnvironmentVariable("AzureWebJobsStorage",EnvironmentVariableTarget.Process);
    log.LogInformation("the string in app settings is: " + appStr);

Результат теста приведен ниже: enter image description here

0 голосов
/ 24 октября 2018

Я столкнулся с тем же.Если вы не используете Entity Framework (как показано на рисунке), строка подключения не присоединяется.Я просто поместил строку подключения в appsettings и пошел дальше.

...