用于替换 ASP.net MVC 中的连接字符串的 aws 环境变量
Posted
技术标签:
【中文标题】用于替换 ASP.net MVC 中的连接字符串的 aws 环境变量【英文标题】:aws Environment Variables to replace connection string in ASP.net MVC 【发布时间】:2018-08-15 15:46:17 【问题描述】:我试图在 AWS elastic beanstalk 中部署一个应用程序,并在 web.config 文件中使用连接字符串,一切正常。但是当我尝试通过在 AWS 应用程序中设置环境变量来实现时,它不起作用。我所做的是我在 RDS_DATABASENAME
- admin 这样的 aws 中添加了 AWS 标签键值对,然后我在 web.config 中添加了那些像
<add key="RDS_DB_NAME" value="RDS_DB_NAME"/>
<add key="RDS_USERNAME" value="RDS_USERNAME"/>
<add key="RDS_PASSWORD" value="RDS_PASSWORD"/>
<add key="RDS_HOSTNAME" value="RDS_HOSTNAME"/>
<add key="RDS_PORT" value="*RDS_PORT" />
然后在构建 connectionString 时我使用了这个:
var appConfig = ConfigurationManager.AppSettings; // trying to get connection details from enviornment varibales
string dbname = appConfig["RDS_DB_NAME"];
if (string.IsNullOrEmpty(dbname)) return null;
string username = appConfig["RDS_USERNAME"];
string password = appConfig["RDS_PASSWORD"];
string hostname = appConfig["RDS_HOSTNAME"];
string port = appConfig["RDS_PORT"];
SqlConnectionStringBuilder sqlString = new SqlConnectionStringBuilder()
DataSource = hostname + "," + port,
InitialCatalog = dbname,
UserID = username,
Password = password
;
return sqlString.ToString();
我以某种方式关注了 aws 文档本身,但我错过了一些东西!
【问题讨论】:
【参考方案1】:Elastic Beanstalk 的想法是,为环境配置的任何环境属性都将自动传递给您的应用程序。在 .NET 应用程序中,这意味着它们会自动附加到 Web.config 的 <appSettings>
部分的末尾。
因此,您不需要对 Web.config 进行任何更改(我会将这些变量完全排除在外),并且您构建 connectionString 的实现看起来很好。
要进行故障排除,请尝试启动设置了环境属性的应用程序。然后登录到实例并验证变量是否已正确添加到 Web.config。如果是这样,您可能需要进行更多测试,以确保您的应用程序正确读取它们。
【讨论】:
先生,我对此很陌生,请指导我如何确保应用程序正在读取这些环境变量 @AmalSebastian 您可以测试将变量添加到本地 web.config 并调试您的应用程序,或者在测试dbname
变量时将日志添加到您当前的 return null
位置。
先生,我在本地测试了添加变量的工作,如何验证变量是否已正确添加到Web.config。
如果您登录到 Beanstalk 创建的 EC2 实例,您应该能够打开 Web.config 并检查变量是否已按预期添加。
另见:***.com/questions/33463161/…以上是关于用于替换 ASP.net MVC 中的连接字符串的 aws 环境变量的主要内容,如果未能解决你的问题,请参考以下文章