You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 AWS Lambda项目模板中无法添加appsettings.json支持的问题

在AWS Lambda中配置appsettings.json并解决ArrayTypeMismatchException错误

问题分析

你遇到的System.ArrayTypeMismatchException通常由以下原因导致:

  • appsettings.json的JSON格式错误(比如数组定义不符合规范)
  • Lambda环境中程序集路径异常,导致读取的配置文件内容无效
  • appsettings.json未被正确打包到Lambda部署包中

解决步骤

1. 确保appsettings.json结构正确

GetConnectionString方法默认读取配置中ConnectionStrings节点下的键,所以你的appsettings.json必须符合如下结构:

{
  "ConnectionStrings": {
    "SAMPLE_CONNECTION_STRING": "your-actual-connection-string"
  }
}

检查JSON语法是否完全正确,避免逗号遗漏、括号不匹配等问题。

2. 将appsettings.json设置为嵌入式资源

Lambda的文件系统环境与本地不同,依赖文件路径读取配置容易出问题,推荐将配置文件嵌入程序集:

  • 在Visual Studio中右键config/appsettings.json → 属性
  • 将生成操作设置为嵌入式资源
  • 确认项目文件(.csproj)中包含如下配置:
<ItemGroup>
  <EmbeddedResource Include="config\appsettings.json" />
</ItemGroup>

3. 修改配置加载逻辑

替换原有的GetConfiguration方法,从嵌入式资源流读取配置:

private readonly IConfiguration _configuration;

// 构造函数
public YourLambdaClass()
{
    _configuration = GetConfiguration();
}

private IConfiguration GetConfiguration()
{
    var assembly = Assembly.GetExecutingAssembly();
    // 资源名称格式:[项目命名空间].[文件夹].[文件名],比如你的项目名为MyLambda,这里就是MyLambda.config.appsettings.json
    var resourceName = "YourProjectNamespace.config.appsettings.json";

    using var stream = assembly.GetManifestResourceStream(resourceName);
    if (stream == null)
    {
        throw new InvalidOperationException($"找不到嵌入式资源:{resourceName}");
    }

    var cfgBuilder = new ConfigurationBuilder()
        .AddJsonStream(stream);
        // 如果你不需要环境变量覆盖配置,可以移除下面这行
        // .AddEnvironmentVariables();

    return cfgBuilder.Build();
}

4. 验证部署与调用

  • 重新打包并部署Lambda函数
  • 调用_configuration.GetConnectionString("SAMPLE_CONNECTION_STRING"),此时应能正确读取连接字符串

内容的提问来源于stack exchange,提问作者user25193170

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:03:11