2012-05-03 3 views
1

Je souhaite déployer mon application MVC3 sur Azure en utilisant plusieurs sites physiques de la même application. C'est génial de pouvoir utiliser l'élément sites dans ServiceDefinition.csdef pour cela. Mais je veux que chacun des sites se connecte à une base de données différente. La chaîne de connexion est dans le web.config. Existe-t-il un moyen facile de faire cela, en plus de se connecter au VM et de le changer à la main?Plusieurs instances de site dans un webrole avec web.config différent

Répondre

1

Vous pouvez enregistrer une tâche de démarrage pour aller et modifier/déplacer les fichiers web.config au démarrage de la machine virtuelle. C'est un peu brouillon, mais plus propre que de le faire à la main!

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

+1

Les machines virtuelles Azure Windows ne sont pas conservées. Par conséquent, il n'est pas recommandé de faire quoi que ce soit par RDP à VM. En outre, lorsque la machine virtuelle est prête et que le rôle est déjà prêt à effectuer toute modification dans web.config, elle ne sera pas disponible pour l'application IIS. Le mieux est de créer une solution directement dans votre rôle. – AvkashChauhan

+0

@Avkash Vous voulez dire en récupérant la chaîne de connexion d'une autre source dans le code? – RolandG

1

[Réponse à votre commentaire] - Avec Windows Azure (en fait avec une solution PaaS) La première règle de base est que lorsque le rôle commence toute la configuration devrait être prêt et la deuxième règle de pouce est que rien ne doit être fait dans la machine virtuelle via l'accès RDP, car les modifications ne seront pas conservées. En raison de cette configuration requise déployée dans Azure Package ou modifiée directement à partir de la tâche de démarrage.

[Répondre à votre question] Dans Windows Azure, vous pouvez exécuter plusieurs sites au sein d'un même rôle Web, mais ils doivent tous partager le même fichier web.config principal, car plusieurs sites s'exécutent dans un même rôle Web. Voici comment vous pouvez le faire: http://msdn.microsoft.com/en-us/library/windowsazure/gg433110.aspx

Maintenant que votre exigence est d'avoir plusieurs bases de données, donc dans votre web.config vous pouvez ajouter la chaîne de connexion de plusieurs bases de données comme ci-dessous: $

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

fois vous avez ci-dessus, dans votre code ASP.NET, vous pouvez énumérer ces chaînes de connexion et utiliser des sites spécifiques comme décrit dans l'exemple donné:

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

Enfin, vous pouvez ajouter plusieurs sites avec votre rôle Web pendant le développement et peut également avoir une connexion DB spécifique spécifiée dans web.config, donc je ne pense pas qu'il soit nécessaire d'utiliser la tâche de démarrage ou de faire quelque chose dans la VM, sauf si je suis Il manque quelque chose ici.

Questions connexes