Azure 一个webrole中的多个站点实例具有不同的web.config

Azure 一个webrole中的多个站点实例具有不同的web.config,azure,Azure,我想使用同一应用程序的多个物理站点将我的MVC3应用程序部署到Azure。 很好,我可以使用ServiceDefinition.csdef中的sites元素来完成这项工作 但我希望每个站点都连接到不同的数据库。连接字符串位于web.config中。除了登录虚拟机并手动更改外,还有什么简单的方法可以做到这一点吗?您可以注册一个启动任务,在虚拟机启动时转到并修改/移动web.config文件。这有点凌乱,但比手工更干净 [回答您的意见]-对于Windows Azure(实际上是任何PaaS解决方案)

我想使用同一应用程序的多个物理站点将我的MVC3应用程序部署到Azure。 很好,我可以使用ServiceDefinition.csdef中的sites元素来完成这项工作


但我希望每个站点都连接到不同的数据库。连接字符串位于web.config中。除了登录虚拟机并手动更改外,还有什么简单的方法可以做到这一点吗?

您可以注册一个启动任务,在虚拟机启动时转到并修改/移动web.config文件。这有点凌乱,但比手工更干净


[回答您的意见]-对于Windows Azure(实际上是任何PaaS解决方案),第一条经验法则是,当角色启动时,所有配置都应准备就绪,第二条经验法则是不应通过RDP访问在VM中执行任何操作,因为更改不会持久。由于这个必需的配置,要么部署在Azure包中,要么直接从启动任务修改

[回答你的问题] 在Windows Azure中,您可以在一个Web角色中运行多个站点,但是它们都应该共享相同的主Web.config,因为多个站点在一个Web角色中运行。以下是您如何做到这一点:

现在,由于您的要求是拥有多个数据库,因此可以在web.config中添加多个数据库连接字符串,如下所示:
$

 <ConnectionString>
 <Add name="DB1" connectionString="Data Source=DS1.........."/>
 <Add name="DB2" connectionString="Data Source=DS2.........."/>
 </ConnectionString>


最后,您可以在开发过程中使用web角色添加多个站点,也可以在web.config中指定特定的DB连接,因此我认为根本不需要使用启动任务或在VM中执行某些操作,除非我在这里遗漏了一些内容

Windows Azure VM不会持久化,因此根本不建议通过RDP对VM执行任何操作。此外,当VM已准备就绪且角色已准备就绪时,IIS应用程序将无法使用web.config中的任何更改。您最好直接在您的角色中创建解决方案。@Avkash您的意思是从代码中的另一个源获取连接字符串?