【问题标题】:Read an appsettings.json file using the AWS Serverless Application in VS2017在 VS2017 中使用 AWS 无服务器应用程序读取 appsettings.json 文件
【发布时间】:2019-07-05 11:26:00
【问题描述】:

我创建了一个新的 AWS 无服务器应用程序 (.NET Core) 并设置了一个 Lambda 函数,但我想从 appsettings.json 文件中读取一些信息,就像我对普通 ASP.NET Core 2 Web 应用程序所做的那样。如何包含 appsettings.json 文件并读取设置?我有一些端点我想存储并且不想将它们硬编码到我的应用程序中。

【问题讨论】:

  • 我还建议 - 如果您想让环境变量更容易在应用程序代码之外存储和编辑 - 您可以使用 AWS Lambda 环境变量。 Environment.GetEnvironmentVariable() 在执行期间可以访问这些。

标签: c# aws-lambda visual-studio-2017 amazon-cloudformation asp.net-core-2.0


【解决方案1】:

您可以像将配置系统添加到任何非 asp 核心项目一样执行此操作。

将以下 nuget 包添加到您的无服务器应用程序:

Microsoft.Extensions.Configuration

Microsoft.Extensions.Configuration.Binder

Microsoft.Extensions.Configuration.Json

然后添加您的appSettings.json 配置文件。由于您希望设置包含在已发布的 zip 中,请确保将 Copy to Output Directory 设置为 true

在这之后你可以写一些初始化代码:

     public IConfiguration Configuration { get; private set; }

     private void ConfigureSettings()
        {
            Configuration = new ConfigurationBuilder()
                .AddJsonFile("appSettings.json", optional: true)
                .Build();
        }

我在上面盲打,所以希望它有效。如果您想使用强类型 POCO 而不是 Configuration,您可以通过执行以下操作来使用 Microsoft.Extensions.Configuration.Json 功能:

        public ApplicationConfigPoco Configuration
        {
            get
            {
                return Configuration.Get<ApplicationConfigPoco>();
            }
        }

最后,由于您的 Lambda 在 linux 上运行,请注意 Windows 系统上不存在的区分大小写。例如,如果您的文件是 appSettings.json,则不会加载 appsettings.json

【讨论】:

  • 您关于 linux 区分大小写的最后评论非常有用。我可以确认它正在工作。
  • 这很好用。我在lambda函数实现类构造函数中添加了它。这是我能找到的最接近此类应用程序入口点的东西。
猜你喜欢
  • 2019-11-05
  • 2022-12-12
  • 2019-05-28
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2018-03-03
相关资源
最近更新 更多