.NET核心AWS RDS连接
我正在Amazons AWS上创建一个.NET Core Web API,Elastic Beanstalk。 我正在尝试添加数据库,但是他们添加数据库的指南不适用于.Net Core https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_NET.rds.html
它说要使用“ConfigurationManager.AppSettings;”获取相关信息,但这在.NET Core中是不可能的。
有人可以提供一些关于如何获取数据库信息的信息吗? (“RDS_DB_NAME”“RDS_USERNAME”“RDS_PASSWORD”“RDS_HOSTNAME”)
更新我尝试阅读https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration但我还没有解决问题。 我似乎无法从AWS获得值。
它只返回我在自己的appsettings.json中设置的内容。这是我的代码:MyOptions.cs
public class MyOptions { public MyOptions() { // Set default value. } public string RDS_HOSTNAME { get; set; } public string RDS_PORT { get; set; } public string RDS_DB_NAME { get; set; } public string RDS_USERNAME { get; set; } public string RDS_PASSWORD { get; set; } }
StartUp.cs
public void ConfigureServices(IServiceCollection services) { // Register the IConfiguration instance which MyOptions binds against. services.Configure(Configuration); // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); services.AddMvc(); }
HomeController.cs
namespace WebApplication2.Controllers { [Route("")] public class HomeController : Controller { private readonly MyOptions _options; public HomeController(IOptions optionsAccessor) { _options = optionsAccessor.Value; } [HttpGet] public IActionResult Index() { var RDS_DB_NAME = _options.RDS_DB_NAME; var RDS_HOSTNAME = _options.RDS_HOSTNAME; var RDS_PASSWORD = _options.RDS_PASSWORD; var RDS_PORT = _options.RDS_PORT; var RDS_USERNAME = _options.RDS_USERNAME; return Content($"RDS_DB_NAME = {RDS_DB_NAME}, RDS_HOSTNAME = {RDS_HOSTNAME}, RDS_PASSWORD = { RDS_PASSWORD}, RDS_PORT = {RDS_PORT}, RDS_USERNAME = { RDS_USERNAME}"); } } }
我遇到了这个确切的问题,它比我预想的要复杂得多。
第1步 – 我从另一个Stack Overflow问题修改了这个答案 。 我在Startup.cs中的代码如下所示:
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true) .AddJsonFile(@"C:Program FilesAmazonElasticBeanstalkconfigcontainerconfiguration", optional: true, reloadOnChange: true) .AddEnvironmentVariables(); // This adds EB environment variables. builder.AddInMemoryCollection(GetAwsDbConfig(builder.Build())); Configuration = builder.Build(); } private Dictionary GetAwsDbConfig(IConfiguration configuration) { Dictionary dict = new Dictionary(); foreach (IConfigurationSection pair in configuration.GetSection("iis:env").GetChildren()) { string[] keypair = pair.Value.Split(new[] { '=' }, 2); dict.Add(keypair[0], keypair[1]); } return dict; } private string GetRdsConnectionString() { string hostname = Configuration.GetValue("RDS_HOSTNAME"); string port = Configuration.GetValue ("RDS_PORT"); string dbname = Configuration.GetValue ("RDS_DB_NAME"); string username = Configuration.GetValue ("RDS_USERNAME"); string password = Configuration.GetValue ("RDS_PASSWORD"); return $"Data Source={hostname},{port};Initial Catalog={dbname};User ID={username};Password={password};"; }
第2步 – 您需要转到AWS控制台中的RDS服务。 选择要连接的实例 – >实例操作 – >查看详细信息。 您将能够找到RDS_HOSTNAME(端点)和RDS_PORT(端口)。
RDS_DB_NAME是您的代码要使用的数据库名称。
RDS_USERNAME和RDS_PASSWORD是在Elastic Beanstalk中创建数据库时使用的主用户名和密码。 如果您转到Elastic Beanstalk – > Configuration – > Data Tier – >(点击Gear),您会看到您的主用户名,如果您忘记密码,可以选择更改密码。
第3步 – 现在您已拥有所有数据,您必须在Elastic Beanstalk中输入这些选项作为环境属性。 转到Elastic Beanstalk – >软件配置 – >(单击齿轮)。 本页底部是环境属性。 您可以在此处输入第一步中代码中的名称和第二步中RDS中的值。
有关AWS文档的更多信息,请查看此处和此处 。
上述就是C#学习教程:.NET核心AWS RDS连接分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022899.html