Я много изучил эту проблему и обнаружил, что проблема связана с ConnectionString. Я использую приведенную ниже строку подключения, и она отлично работает локально в моем приложении «Функции Azure», но когда я развертываю ее в Azure. Я получаю эту ошибку:
2024-06-22T11:08:57Z [Verbose] Sending event Create
2024-06-22T11:08:57Z [Verbose] Sending exception event: Format of the initialization string does not conform to specification starting at index 0.
Для справки моя строка подключения:
Server=tcp:buzzats.database.windows.net;Initial Catalog=buzzats;Persist Security Info=False;User ID=ibraheem;Password=...;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Я перепробовал все возможное, но не могу исправить эту ошибку. Я использую Node JS v20
в качестве среды выполнения приложения «Функции Azure». Ниже приведен пример кода одного HttpTrigger:
const { app, input } = require("@azure/functions");
const sql = input.sql({
commandText: "SELECT * FROM [dbo].[Students]",
commandType: "Text",
connectionStringSetting: "SqlConnectionString",
});
app.http("getStudents", {
methods: ["GET"],
authLevel: "anonymous",
extraInputs: [sql],
handler: async (request, context) => {
try {
const response = await context.extraInputs.get(sql);
return { status: 200, body: JSON.stringify(response) };
} catch (error) {
return { status: 200, body: error.message };
}
},
});
Я просмотрел весь StackOverflow, но не смог найти решения своей проблемы. Я точно следую инструкциям, указанным на сайте Microsoft здесь
Это моя строка подключения, хранящаяся в файле local.settings.json: "SqlConnectionString": "Server=tcp:buzzats.database.windows.net;Initial Catalog=buzzats;Persist Security Info=False;User ID=ibraheem;Password=. ...;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;CoTimeout=30;" Как я могу сохранить это в вашем формате?
Можете ли вы поделиться скриншотом ошибки? Добавили ли вы SqlConnectionString в приложение «Функция Azure» > переменные среды?
Можете ли вы проверить и поделиться строкой SqlConnectionString в приложении-функции Azure > переменные среды?
Предоставьте более подробную информацию. Ошибка произошла из-за несоответствия строки подключения только в приложении «Функция Azure» на портале.
Я успешно запустил код как на локальном , так и на портале.
Можете ли вы поделиться снимком экрана с ошибкой в вызовах функций Azure, например этот.
Я пытался получить ту же ошибку со своей стороны и получил ее после изменения значения SqlConnectionString в приложении-функции Azure > Переменные среды , добавив одинарную кавычку перед паролем. Я получил эту ошибку Журналы.
Формат строки инициализации не соответствует спецификации, начиная с индекса.
Вышеупомянутая ошибка произошла из-за несоответствия значения SqlConnectionString в приложении функции Azure.
Поэтому убедитесь, что значение SqlConnectionString правильное, без каких-либо дополнительных кавычек в переменных среды приложения функции Azure > Параметры приложения, как показано ниже.
"SqlConnectionString": "Server=tcp:<server_name>.database.windows.net;Initial Catalog=<db_name>;Persist Security Info=False;User ID=<user_name>;Password=<password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
Код:
const { app, input } = require("@azure/functions");
const sql = input.sql({
commandText: "SELECT * FROM [dbo].[Students]",
commandType: "Text",
connectionStringSetting: "SqlConnectionString",
});
app.http("getStudents", {
methods: ["GET"],
authLevel: "anonymous",
extraInputs: [sql],
handler: async (request, context) => {
try {
const response = await context.extraInputs.get(sql);
return { status: 200, body: JSON.stringify(response) };
} catch (error) {
return { status: 200, body: error.message };
}
},
});
Выход :
Приложение-функция успешно выполнилось и получило данные моей базы данных на портале Azure, как показано ниже.
Я проверял несколько раз, в моей строке подключения нет дополнительных кавычек или чего-либо еще, что добавляется в переменные env приложения функций. Более того, ошибка, которую вы задаете, точно такая же, как я указал в исходном вопросе вверху. В моем пароле нет специальных символов, в нем есть только заглавные и строчные символы с некоторыми цифрами, что, я думаю, не должно вызывать эту проблему, но это так.
Не могу прикрепить скриншоты в комментариях, поэтому прикрепляю сюда ссылки: строка подключения
@IbraheemHaseeb Можете ли вы удалить строку подключения из переменных среды и попытаться добавить ее снова. Добавили ли вы IP-адрес приложения-функции на сервере SQL>Сеть или разрешили доступ ко всем сетям? Можете ли вы проверить и обновить его, если он не добавлен. Если ошибка не устранена, попробуйте еще раз развернуть код из VScode и проверить.
Теперь это работает, оказывается, оно добавляло строку подключения в переменную среды, однако предполагалось добавить ее в раздел строк подключения, как показано здесь
Огромное спасибо за вашу помощь в решении этой проблемы, это очень серьезно значит.
@IbraheemHaseeb Рад узнать, что ваша проблема решена.
Проверьте этот ТАК ответ и эту ссылку, чтобы найти то же решение ошибки.