在 Azure 应用服务设置中存储连接字符串
Storing connection strings in Azure App Service Settings
我有一个 ASP .Net Core 2.2 Web API 连接到 MySQL 数据库。
它托管在 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 应用服务设置时(在“连接字符串”部分下),我在 [=29] 中为 Name 输入了什么=] 对?我是只输入 "MyDataContext" 还是输入 "ConnectionStrings:MyDataContext"? (我试图保持与 appsettings.json 文件中相同的结构)。
我的第二个问题是,我还能像现在这样在 Startup.ConfigureServices 方法中读取连接字符串吗?据我了解,Azure App Service 会自动将设置中的连接字符串存储注入 API?我不确定我是否遗漏了什么,但它不起作用...
似乎在更改 Azure 应用服务的设置时有轻微的延迟(至少几秒钟)——我太快了...
是的,是的。
是的,你可以将连接字符串命名为 almost 任何你想要的,虽然我最近发现某些字符是不允许的,但 Azure 不会告诉你这个,它只会把它们去掉而不告诉你,所以为了安全起见,我只使用字母数字字符,如果需要,你可以使用 CamelCasing。你不需要像 ConnectionStrings:
这样的前缀,因为这是由 Azure 自动完成的,而且语法在最新版本中已经改变了。
是的,如果您没有指定自己的 ConfigurationBuilder
,您的网络应用程序应该调用 CreateDefaultBuilder
,这将在运行时添加环境变量。您编写的代码将保持不变,您可以从 appsettings.json
文件中删除连接字符串,如果将其保留在那里,它无论如何都会被覆盖。
如果您出于安全原因能够将连接字符串存储在 Azure 中,那么最好从 appsettings.json
文件中删除连接字符串,这样您就不会将数据库服务器地址或连接凭据存储在你的源代码。在此之上的一个步骤是将托管身份与 Active Directory 结合使用,您可以在连接字符串中指定一个 AD 用户名但没有密码,然后将该用户(或用户组)指定为服务器管理员。
我有一个 ASP .Net Core 2.2 Web API 连接到 MySQL 数据库。 它托管在 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 应用服务设置时(在“连接字符串”部分下),我在 [=29] 中为 Name 输入了什么=] 对?我是只输入 "MyDataContext" 还是输入 "ConnectionStrings:MyDataContext"? (我试图保持与 appsettings.json 文件中相同的结构)。 我的第二个问题是,我还能像现在这样在 Startup.ConfigureServices 方法中读取连接字符串吗?据我了解,Azure App Service 会自动将设置中的连接字符串存储注入 API?我不确定我是否遗漏了什么,但它不起作用...
似乎在更改 Azure 应用服务的设置时有轻微的延迟(至少几秒钟)——我太快了...
是的,是的。
是的,你可以将连接字符串命名为 almost 任何你想要的,虽然我最近发现某些字符是不允许的,但 Azure 不会告诉你这个,它只会把它们去掉而不告诉你,所以为了安全起见,我只使用字母数字字符,如果需要,你可以使用 CamelCasing。你不需要像 ConnectionStrings:
这样的前缀,因为这是由 Azure 自动完成的,而且语法在最新版本中已经改变了。
是的,如果您没有指定自己的 ConfigurationBuilder
,您的网络应用程序应该调用 CreateDefaultBuilder
,这将在运行时添加环境变量。您编写的代码将保持不变,您可以从 appsettings.json
文件中删除连接字符串,如果将其保留在那里,它无论如何都会被覆盖。
如果您出于安全原因能够将连接字符串存储在 Azure 中,那么最好从 appsettings.json
文件中删除连接字符串,这样您就不会将数据库服务器地址或连接凭据存储在你的源代码。在此之上的一个步骤是将托管身份与 Active Directory 结合使用,您可以在连接字符串中指定一个 AD 用户名但没有密码,然后将该用户(或用户组)指定为服务器管理员。