首页 > 解决方案 > 在 aws eb 上存储 asp.net core 2 的连接字符串

问题描述

我在 aws eb 上部署了 .net core 2 应用程序。我需要 staging、qa 和 prod 服务器,但不知道如何处理连接字符串?是否可以将其存储在 eb 的环境变量中?或者是否可以为这三个实例制作 env 并为每个实例创建不同的 application.json 文件?

标签: c#amazon-web-servicesasp.net-core.net-coreasp.net-core-mvc

解决方案


您可以在 ASP.NET Core 中使用选项模式

示例您有这样的 appsetting.json

"WebAppUrl": {
  "Staging": "someurl",
  "Qa": "someurl",
  "Prod": "someurl"
}

我需要定义一个这样的模型类来存储信息

public class WebAppUrl
{
  public string Staging { get; set; }
  public string Qa { get; set; }
  public string Prod { get; set; }
}

所以我们有了配置结构。我们需要的最后一件事是在 Startup.cs 中注册

services.Configure(configuration.GetSection("WebAppUrl"));

所以你可以像这样使用

private readonly IOptions<WebAppUrl> _webAppUrl;

public EmailSender(IOptions<WebAppUrl> _webAppUrl)
{
  _webAppUrl = _webAppUrl;
}

_webAppUrl.Value.Staging;
_webAppUrl.Value.Qa;
_webAppUrl.Value.Prod;

好的,这就是 Microsoft 设置多个 appsetting.json文件的方式。你可以看看,因为它有点长

这是我如何使用基于环境的 json 文件进行配置

public Startup(
            IConfiguration configuration,
            IHostingEnvironment hostingEnvironment)
        {
            _configuration = configuration;
            _hostingEnvironment = hostingEnvironment;

            var builder = new ConfigurationBuilder();

            if (_hostingEnvironment.IsDevelopment())
            {
                builder.AddUserSecrets<Startup>();
            }
            else
            {
                builder
                    .SetBasePath(hostingEnvironment.ContentRootPath)
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{hostingEnvironment.EnvironmentName}.json", optional: true)
                    .AddEnvironmentVariables();
            }
        }

推荐阅读