• 【Azure 应用服务】App Service 通过门户配置数据库连接字符串不生效 


    应用设置 Application Setting

    在应用服务中,应用设置是作为环境变量传递给应用程序代码的变量。 对于 Linux 应用和自定义容器,应用服务使用 --env 标志将应用设置传递到容器,以在容器中设置环境变量。 无论是这两种情况中的哪一种,它们都会在应用启动时注入到应用环境。 在添加、删除或编辑应用设置时,应用服务会触发应用重启。

    对于 ASP.NET 和 ASP.NET Core 开发人员而言,在应用服务中设置应用设置类似于在 Web.config 或 appsettings.json 中的 <appSettings> 内进行设置,但应用服务中的值会替代 Web.config 或 appsettings.json 中的值。 可以在 Web.config 或 appsettings.json 中保留开发设置(例如本地 MySQL 密码),并在应用服务中安全地保留生产机密(例如 Azure MySQL 数据库密码) 。 相同的代码在本地调试时使用开发设置,部署到 Azure 时使用生产机密。

    连接字符串 Connection strings

    对于 ASP.NET 和 ASP.NET Core 开发人员而言,在应用服务中设置连接字符串类似于在 Web.config 中的 <connectionStrings> 内进行设置,但应用服务中设置的值会替代 Web.config 中的值。可将开发设置(例如,数据库文件)保留在 Web.config 中,并将生产机密(例如,SQL 数据库凭据)安全保留在应用服务中。 相同的代码在本地调试时使用开发设置,部署到 Azure 时使用生产机密。

    对于其他语言堆栈,最好是改用应用设置,因为连接字符串需要在变量键中使用特殊的格式才能访问值。

    问题描述

     App Service 页面上配置的连接字符串不生效? 什么情况下使用Application Settings,什么时候使用连接字符串Connection String

    问题解答

    这个问题可以从应用的Web.config文件或者是AppSettings.json文件来回答:

    1)如果配置信息是在web.config <connectionStrings> </ connectionStrings >标签下的,在ConfigurationManager代码使用的是ConnectionStrings对象:

    ConfigurationManager.ConnectionStrings["connection_string_name"].ConnectionString

    就需要使用App Service的Connection strings配置

    2)如果是在web.config <appSettings>  </appSettings> 标签下配置连接的信息,在ConfigurationManager代码使用的是AppSettings对象:

    ConfigurationManager.AppSettings["application_setting_name"]

    就需要使用App Service的Application Setting配置

    特别注意,当使用的开发语言是 ASP.NET 和 ASP.NET Core,是可以直接使用 ConnectionStrings 连接字符串的名字,不需要加前缀。 如果是其他语言,必须加以下的前缀。切记切记。这也是本文问题的原因。

    在运行时,连接字符串可用作环境变量,其前缀为以下连接类型:

    • SQLServer:SQLCONNSTR_
    • MySQL: MYSQLCONNSTR_
    • SQLAzure:SQLAZURECONNSTR_
    • 自定义:CUSTOMCONNSTR_
    • PostgreSQL:POSTGRESQLCONNSTR_

    例如,可以使用环境变量 MYSQLCONNSTR_connectionString1 的形式访问名为 connectionstring1 的 MySql 连接字符串

    参考资料

    在 Azure 门户中配置应用服务应用:https://docs.azure.cn/zh-cn/app-service/configure-common#configure-connection-strings

    当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

  • 相关阅读:
    阿里的面试官都喜欢问哪些问题?
    Spring AOP中的JDK和CGLib动态代理哪个效率更高?
    招聘季!送你21套经典面试题!助你一臂之力!
    Spring AOP中的JDK和CGLib动态代理哪个效率更高?
    为什么需要分布式配置中心?
    线上出故障了!我慌得一匹!教大家如何应对在线故障!
    阿里巴巴的26款超神Java开源项目!
    完了!生产事故!几百万消息在消息队列里积压了几个小时!
    十大经典排序算法(动图演示)
    用户画像学习笔记
  • 原文地址:https://www.cnblogs.com/lulight/p/15256414.html
Copyright © 2020-2023  润新知