Я много изучил эту проблему и обнаружил, что проблема связана с 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 здесь
🤔 А знаете ли вы, что...
Node.js позволяет создавать масштабируемые приложения с использованием механизмов кластеризации.
Формат строки инициализации не соответствует спецификации, начиная с индекса.
Вышеупомянутая ошибка произошла из-за несоответствия значения 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, как показано ниже.