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

时间:2012-05-03 15:29:00

标签: azure

我想使用同一个应用的多个物理网站将我的MVC3应用部署到Azure。 我可以使用ServiceDefinition.csdef中的sites元素来执行此操作。

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

2 个答案:

答案 0 :(得分:1)

您可以在VM启动时注册启动任务以修改/移动web.config文件。这有点凌乱,但比手工操作要干净!

http://msdn.microsoft.com/en-us/library/windowsazure/gg456327.aspx

答案 1 :(得分:1)

[回答你的评论] - 使用Windows Azure(实际上有任何PaaS解决方案)第一个经验法则是,当角色启动时,所有配置都应该准备就绪,第二个规则是没有任何事情应该在VM通过RDP访问,因为更改不会持久。由于此必需配置要么部署在Azure包中,要么直接从启动任务进行修改。

[回答你的问题] 在Windows Azure中,您可以在一个Web角色中运行多个站点,但是它们都应共享相同的主Web.config,因为多个站点在一个Web角色中运行。以下是如何做到这一点: http://msdn.microsoft.com/en-us/library/windowsazure/gg433110.aspx

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

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

如果您有上述内容,则可以在ASP.NET代码中枚举这些连接字符串,并使用特定网站,如给定示例中所述:

http://www.dotnetspark.com/kb/780-how-to-use-multiple-database-connection.aspx

最后,您可以在开发期间添加具有Web角色的多个站点,并且还可以在web.config中指定特定的数据库连接,因此我认为根本不需要使用启动任务或在VM中执行某些操作,除非我我在这里错过了什么。