【问题标题】:Loading AppSettings.json in mock lambda test tool在模拟 lambda 测试工具中加载 AppSettings.json
【发布时间】:2021-09-14 23:52:39
【问题描述】:

我有一个 AWS Lambda Web API,我正在尝试使用我之前使用过的代码将 appsettings.json 加载到内存中。

appsettings.json 我有这个:

{
    "AppSettings": {
        "TestValue": "Some value"
    }
}

StartUp.cs 我有这个:

public class Startup
{
    public static IConfiguration Configuration { get; private set; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));

SomeController.cs 我有这个:

公共类 SapController : ControllerBase { 私有只读 AppSettings _appSettings;

public SapController(IOptionsMonitor<AppSettings> optionsMonitor)
{
    _appSettings = optionsMonitor.CurrentValue;
}

问题是,在 Mock Lambda 测试工具下,_appSettings 属性都是 null

我真的不想使用特殊情况代码as seen in this postdescribed here 加载应用设置。我真的认为它应该正常加载。我的观点错了吗?

真的有必要使用这段代码在mock lambda测试工具下加载appsettings吗?:

IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.Build();

【问题讨论】:

  • 请发布您的Program.cs 代码
  • 没有;这是一个 lambda。
  • 那么你告诉应用在哪里加载你的 AppSettings.json?
  • 框架应该加载它,我在StartUp.cs 中获取它,请参阅我发布的代码。
  • 你只是建立了一个IConfiguration 但没有用。

标签: amazon-web-services .net-core aws-lambda


【解决方案1】:

所以,由于某种原因,appsettings 没有被传递给我的构造函数。所以我的控制器现在在构造函数中有这个:

public MyController(IConfiguration configuration)
{
    _appSettings = configuration.GetSection(nameof(AppSettings)).Get<AppSettings>();
}

它的缺点似乎是我需要从Configuration 实例获取AppSettings 实例,而不是通过 IoC 传递它。

我仍然不知道为什么,但至少这是可行的。

【讨论】:

    【解决方案2】:

    尝试右键单击您的appsettings.Development.json 文件并将Copy to Output Directory 设置为Copy always。这将确保它在构建时被复制到与您的可执行文件相同的目录,并且您的应用会找到并加载它。

    如果您不希望它成为部署包的一部分,可以将文件添加到您的 .gitignore。无论如何,它不会在生产环境中读取。

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多