gpt4 book ai didi

c# - AWS .NET Core 3.1 模拟 Lambda 测试工具,无法读取 AppSettings.json 或 App.config

转载 作者:行者123 更新时间:2023-12-01 23:16:44 25 4
gpt4 key购买 nike

使用 AWS .NET Core 3.1 模拟 Lambda 测试工具,我无法让 lambda 函数从 appsettings.json 甚至 app.config 文件中读取。

这是两个单独的方法,当我尝试获取返回值时,每个方法都返回 null。

在单独的 .NET Core 3.1 控制台应用程序中,这些相同的方法工作得很好。

那么,运行时的“模拟 Lambda 测试工具”是否有某些原因不允许我的代码从设置为始终复制的 JSON 或 App.config 文件中读取?这是否意味着当打包并上传到 AWS Lambda 控制台时,它不会在 AWS 上运行?

我的情况不允许允许我为我的本地数据库连接字符串使用 Lambda 环境变量。而且我无法将连接字符串存储在代码中,因为它必须来自 .json 或 .config 文件。

对此有什么想法或智慧吗?

代码:

方法一

// requires: System.Configuration.ConfigurationManager
var connString = System.Configuration.ConfigurationManager.AppSettings["connectionString"];

/*
Reads App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="connectionString" value="Server=127.0.0.1;Port=0000;Database=some-db;User Id=some-user;Password=some-password;" />
</appSettings>
</configuration>
*/

方法二

// requires: Microsoft.Extensions.Configuration; Microsoft.Extensions.Configuration.Json;

public class DbConfig
{
public string ConnectionString { get; set; }
}

var config = new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json").Build();
var section = config.GetSection(nameof(DbConfig));
var dbClientConfig = section.Get<DbConfig>();
var connString = dbClientConfig.ConnectionString;

/*
Reads appsettings.json:
{
"DbConfig": {
"connectionString": "Server=127.0.0.1;Port=0000;Database=some-db;User Id=some-user;Password=some-password;"
}
}
*/

我还使用了一种更简单的基本方法,它也适用于控制台应用程序,但不适用于 Lambda。

方法三:

// requires: Microsoft.Extensions.Configuration;
IConfiguration _config = new ConfigurationBuilder().AddJsonFile("appconfig.json", true, true).Build();
var _connString = _config["connectionString"];

/*
Reads appconfig.json:
{
"connectionString": "Server=127.0.0.1;Port=0000;Database=some-db;User Id=some-user;Password=some-password;"
}
*/

再次感谢。

最佳答案

从这里blog post

The test tool is an ASP.NET Core application that loads and executes the Lambda code.

这意味着此 Web 应用程序有自己的配置文件,与您的应用程序的配置文件不同。如果您在启动类中放置一个断点,您将看到配置中保留了不同的字段,而不是 appsettings.json 或任何文件中的字段。

解决方案 #1

将当前目录注册为搜索配置文件的文件夹

new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true)

关于c# - AWS .NET Core 3.1 模拟 Lambda 测试工具,无法读取 AppSettings.json 或 App.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68728935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com