.NET 6.0 AWS Lambda读取appsettings.json值返回Null问题排查
AWS Lambda (.NET 6)读取appsettings.json返回Null的问题解决
问题场景
我用Visual Studio 2022开发基于C# .NET 6.0的AWS Lambda函数,项目是仅包含Function类的类库,没有Startup.cs。尝试读取appsettings.json配置,但获取的值始终为Null。
配置文件内容(appsettings.json)
{ "SQSARN": "arn:aws:sqs:us-east-1:111111111111:SQS-Queue1", "BucketName": "excel-s3-bucket", "ObjectKey": "Sample.xlsx" }
当前读取代码
config = new ConfigurationBuilder().AddJsonFile("appsettings.json",true,true) .SetBasePath(Directory.GetCurrentDirectory()) .Build(); string myValue = config.GetValue<string>("SQSARN");
解决步骤
调整配置构建顺序
目前代码先添加Json文件再设置BasePath,顺序错误导致程序找不到配置文件。正确顺序是先设置BasePath,再添加Json文件:config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .Build();设置配置文件的复制属性
在Visual Studio中右键点击appsettings.json文件,选择「属性」,将「复制到输出目录」设置为「如果较新则复制」或「始终复制」。Lambda运行时会从输出目录读取文件,不设置的话配置文件不会被打包到部署包中。安装必要的NuGet包
确保项目已安装以下核心依赖包:Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.Json
缺少这两个包会导致Json配置读取功能无法正常工作。
可选:Lambda原生配置方案(推荐)
对于AWS Lambda,更推荐使用环境变量、AWS Systems Manager参数存储或 Secrets Manager 来管理配置,这种方式更符合Serverless场景的最佳实践,但如果坚持使用appsettings.json,完成上面三步即可解决问题。
内容的提问来源于stack exchange,提问作者CPK_2011
相关产品推荐
相关产品推荐

