我试图设置简单的Azure函数来读取XML流并将其同步回数据库。我的计划是使用时间触发器每天执行一次函数。
不过,情况看起来不太好。即使我不使用数据库,我也会收到以下错误:
[Error] Executed 'Functions.<func-name>' (Failed, Id=<func-id>, Duration=1ms)Value cannot be null. (Parameter 'connectionString')
我目前正在尝试执行以下功能:
module.exports = async function(context, req) {
context.res = {
body: "Success!"
};
};
同样的结果。我不能运行它。
我已将连接字符串添加到配置->连接字符串(根据消息,我认为我错过了它(。
我的functions.json文件看起来像:
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 0 * * * *"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
我也试过运行一个C#函数,结果是一样的。
那么,我错过了什么?
从微软到最好的日志记录
AzureWebJobsStorage应用程序设置丢失
解决方案:
- 创建存储帐户(或使用现有帐户(
- 转到功能应用程序的配置
- 将带有连接字符串的AzureWebJobsStorage添加到您的存储帐户(可以在存储帐户概述->访问密钥中找到(
在我的情况下,错误为Microsoft.Extensions.Configuration.AzureAppConfiguration value cannot be null: parameter (connectionString)
发生这种情况是因为我安装了Microsoft。扩展。配置AzureAppConfiguration在我的函数中将配置DI到我的主函数中。Startup.cs
行string cs = Environment.GetEnvironmentVariable("MyDifferentConnectionString");
找不到MyDifferentConnectionString
的环境变量,因此需要将其添加到Function config中。
- 转到应用程序配置(或创建一个(
- 访问密钥(在"设置"下(
- 复制连接字符串
- 转到您的功能
- 配置(在"设置"下(
- 使用环境变量的名称添加新的应用程序设置并粘贴值
- 保存并重新启动您的功能
这是部署问题,我刚刚将设置从appsettings.json/localsettings.json文件复制到配置部分。