用于替换 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 的 &lt;appSettings&gt; 部分的末尾。

因此,您不需要对 Web.config 进行任何更改(我会将这些变量完全排除在外),并且您构建 connectionString 的实现看起来很好。

要进行故障排除,请尝试启动设置了环境属性的应用程序。然后登录到实例并验证变量是否已正确添加到 Web.config。如果是这样,您可能需要进行更多测试,以确保您的应用程序正确读取它们。

【讨论】:

先生,我对此很陌生,请指导我如何确保应用程序正在读取这些环境变量 @AmalSebastian 您可以测试将变量添加到本地 web.config 并调试您的应用程序,或者在测试 dbname 变量时将日志添加到您当前的 return null 位置。 先生,我在本地测试了添加变量的工作,如何验证变量是否已正确添加到Web.config。 如果您登录到 Beanstalk 创建的 EC2 实例,您应该能够打开 Web.config 并检查变量是否已按预期添加。 另见:***.com/questions/33463161/…

以上是关于用于替换 ASP.net MVC 中的连接字符串的 aws 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 ASP.NET MVC 核心模板中的 Bower 替换

ASP.NET MVC 中的非字符串角色名称?

用于引导切换的 asp.net 核心 mvc 标签助手

ASP.Net MVC - 啥替换事件以支持松散耦合?

带有通用提供程序的 ASP.NET MVC 4 中的错误

asp.net mvc中如何读取上传的doc文件中的数据(含有中文字符)