2010-01-12 9 views
12

Encore un autre poste de multi tenancy peur. Je ne trouve tout simplement pas une bonne solution à mon problème, j'ai lu tous les bons posts sur la location multi pour ASP MVC mais j'ai encore besoin de bons conseils.Multi-location en ASP MVC

Je vais créer une présence d'entreprise pour l'un de mes clients. Leur structure d'entreprise est semblable à une entreprise principale (ex: Acme Group Ltd.) qui possède plusieurs autres sociétés (par exemple, Acme Holding Ltd, Acme Technology Ltd., Acme Maritime Ltd., etc.).

Je veux utiliser un projet ASP MVC pour servir de conteneur à tous les sites afin de réduire le code nécessaire et de le garder SEC. Je souhaite également que tous les sites utilisent la même base de données Membership. J'ai d'abord pensé à créer un dossier de contrôleur pour chaque sous-société et un contrôleur racine pour la page principale de l'entreprise. Ensuite, il ressemblerait à ceci:

acme.com ("la page principale d'entreprise")
acme.com/Holding ("Acme Holding SA")
acme.com/Maritme ("Acme Maritme Ltd. «)
...

Cette structure est bien pour moi, mais je veux aussi les utilisateurs du site Web pour accéder à chaque sous-site en fonction de leurs propres domaines distincts, ex:

h olding.acme.com (Cela devrait diriger vers "acme.com/Holding").
...

Ce serait bien sûr aussi travailler, mais la chose est que je ne veux pas l'URL pour changer lorsque l'utilisateur est dirigé vers « acme.com/Holding ». Je voudrais qu'il soit toujours "holding.acme.com", "holding.acme.com/About", "holding.acme.com/Contact", etc. au lieu de "acme.com/Holding/Contact", etc

Quelle serait la meilleure pratique à utiliser dans ce projet particulier, des idées?

+1

Avez-vous accès à MVC2? Et avez-vous regardé la fonction "zones"? – ChadT

+0

En fait, j'utilise MVC2 mais je n'ai pas regardé les zones. Je vais jeter un coup d'oeil maintenant. – Martin

Répondre

6

Restez simple, utilisez IIS URL Rewrite Module. Vous pouvez le configurer pour réécrire acme-holding.com/* URL à acme.com/Holding/*:

<rewrite> 
    <rules> 
     <rule name="Forward to acme.com"> 
      <match url=".*" /> 
      <action type="Rewrite" url="http://acme.com/Holding/{R:0}" /> 
     </rule> 
    </rules> 
</rewrite> 
+0

Je suppose que je vais aller avec cela combiné avec DaRKoN_s astuce concernant les "zones" dans MVC2. Je me demandais juste si cela serait la meilleure pratique ou devrais-je la gérer différemment? – Martin

+2

Je crois que la meilleure pratique serait de rediriger au lieu de réécrire. Google n'aime pas le même contenu avec des URL différentes. –