azure - 在 Azure 应用服务设置中存储连接字符串
问题描述
我有一个连接到 MySQL 数据库的 ASP .Net Core 2.2 Web API。它托管在 Azure 应用服务上。
目前我将连接字符串存储在 appsettings.json 文件中:
"ConnectionStrings": {
"MyDataContext": "Server=server1.mysql.database.azure.com;user id=username;Pwd=password;persistsecurityinfo=True;database=db1;"
}
我在 Startup.cs(在 ConfigureServices 方法中)中读取了连接字符串,如下所示:
services.AddDbContext<MyContext>(options => options.UseMySql(Configuration.GetConnectionString("MyDataContext")));
我读到我可以将这些连接字符串存储在 Azure 应用服务设置中,因为它提供了一些优势。我一直在努力做到这一点,但我正在努力让它发挥作用。
我的第一个问题是,在将连接字符串添加到 Azure 应用服务设置(在连接字符串部分下)时,我应该在名称/值对中为名称输入什么?我只是输入“MyDataContext”还是输入“ConnectionStrings:MyDataContext”?(我试图保持与 appsettings.json 文件中相同的结构)。我的第二个问题是,我还能像现在一样读取 Startup.ConfigureServices 方法中的连接字符串吗?据我了解,Azure App Service 会自动将 Settings 中的连接字符串存储到 API 中的 Configuration 对象中吗?我不确定我是否遗漏了什么,但它不起作用......
解决方案
是的,是的。
是的,您可以将连接字符串命名为几乎任何您想要的名称,尽管我最近发现某些字符是不允许的,但 Azure 不会告诉您这一点,它只会将它们剥离而不告诉您,所以安全起见,我只会使用字母数字字符,如果需要,您可以使用 CamelCasing。您不需要添加任何前缀,ConnectionStrings:
因为这是由 Azure 自动完成的,并且无论如何在最新版本中语法已经改变。
是的,如果你没有指定你自己的ConfigurationBuilder
,你的网络应用程序应该调用CreateDefaultBuilder
它将在运行时添加环境变量。您编写的代码将保持不变,您可以从appsettings.json
文件中删除连接字符串,如果将其保留在那里,它将被覆盖。
如果出于安全原因可以将连接字符串appsettings.json
存储在 Azure 中,最好从文件中删除它们,这样您就不会在源代码中存储数据库服务器地址或连接凭据。更进一步的做法是将托管身份与 Active Directory 结合使用,您可以在连接字符串中指定 AD 用户名但不指定密码,然后将该用户(或用户组)指定为服务器管理员。
推荐阅读
- sql - 如何在 PostgreSQL 中为绑定传递参数 - COPY (...) TO STDOUT (FORMAT binary)?
- axios - 我应该使用哪个 Axios 版本
- dart - FlutterIcon 错误:无效参数:- data.config 是必需的(未定义)
- reactjs - 视频无法在移动设备上播放 - 反应应用程序
- cpu-architecture - 1 个地址线如何为您提供 2 个字节的数据?
- javascript - 垂直排序顺序
- python - 错误代码:400。描述:错误请求:无法解析内联键盘按钮:内联键盘中不允许使用文本按钮”
- java - jsoup select() 方法未从列表中读取所有元素
- android - RecyclerView 过滤器不过滤 (Kotlin)
- django - 为什么引导轮播和 django 不能正常工作?