是否可以在Azure VIP交换期间更改连接字符串

And*_*iih 6 connection-string azure azure-sql-database

我正在尝试在Azure(9月工具包)中设置Staging and Live环境,我想要一个单独的Staging and Live数据库 - 使用不同的连接字符串.显然,我可以在Visual Studio中使用web.config转换来实现这一点,但是有一种方法可以在VIP交换期间自动更改连接字符串 - 以便登台站点指向暂存数据,将实时站点指向实时数据?我宁愿不必两次部署.

And*_*gan 15

使用管理API和PowerShell Cmdlet,您可以自动化大量Azure平台,这可以包括协调VIP交换机和连接字符串更改.

这是方法:

  1. 将数据库连接字符串添加到ServiceConfiguration文件.
  2. 使用RoleEnvironment.GetConfigurationSettingValue修改应用程序逻辑以从Azure特定配置读取连接字符串,而不是更典型的.NET配置ConfigurationManager.ConnectionStrings API
  3. 实施RoleEnvironmentChanging,以便在Azure服务配置发生变化时通知您的逻辑.使用RoleEnvironment.GetConfigurationSettingValue添加代码以在此处更新应用程序的连接字符串.
  4. 使用"登台"数据库连接字符串的ServiceConfiguration设置部署到登台
  5. 编写将调用VIP开关的PowerShell脚本(从Windows Azure Platform PowerShell Cmdlets 2.0构建Move-Deployment cmdlet )并使用包含"生产"数据库连接字符串的新ServiceConfiguration文件调用配置更改(请参阅Set-部署配置)

总之,步骤5将执行VIP切换并在单个自动操作中执行连接串更新.


Ste*_*gan 9

当你进行VIP交换时,我不认为角色有任何变化.相反,它会改变负载平衡器配置.

因此,您的应用中没有任何事情可以导致它更改配置.我唯一能想到的是URL在两者之间的变化.您可以根据访问它的URL(假设我们只讨论Web角色)来实现选择两个连接字符串之一的代码,但它看起来很混乱.

从根本上说,我认为问题在于升级不是一个单独的测试环境; 它是生产的垫脚石.因此,微软的假设是配置不会改变.