2010-11-11 2 views
2

Helo Guys!Sous-domaines dans l'application Asp.Net MVC

Je vais commencer à développer un site web de marketing et les utilisateurs pourront créer des comptes sur ce site. J'aimerais séparer la zone des utilisateurs utilisant des sous-domaines, comme wordpress.com, ning.com, etc. Si un utilisateur crée un compte par exemple: "john", le site web doit répondre à john.mydomain.com pour cela zone utilisateur, mais ce sera le même code (en séparant mon sous-domaine).

Je voudrais savoir, comment puis-je faire un code pour identifier le compte (dans le sous-domaine) pour montrer le compte correct pour le site Web? PS: Bien sûr, il ne doit pas être authentifié pour afficher le site Web.

Merci

Répondre

2

Mon copain et je reçois ce un de nos sites. Nous avions une table de base de données qui contenait SiteId, avec le domaine.

Dans un contrôleur de base, nous avons analysé le domaine à son arrivée, puis trouvé le SiteId approprié dans la base de données. Tous les contrôleurs hérités de ce contrôleur de base, et le SiteId a été transmis à chaque appel à notre modèle.

Admin.Site.com -> SiteId = 1 
Frank.Site.com -> SiteId = 2 

Quand quelqu'un a frappé Admin.Site.com, SiteId de 1 a été adopté au modèle soit récupérer les données, ou sauvegarder/modifier/ajouter/supprimer.

Voici le code que nous avons utilisé pour obtenir le domaine:

public Website CurrentWebsite 
{ 
    get 
    { 
     if (_website == null) 
     { 
      var domain = HttpContext.Request.Url.Host; 
      _website = _websiteRepository.GetWebsiteByDomain(domain); 
     } 
     return _website; 
    } 
} 
2

La gestion de l'itinéraire commence dans asp.net mvc après le nom de domaine ne peut donc pas être pris en utilisant la manipulation de route régulière.

Vous pouvez créer un gestionnaire d'itinéraire qui ajoute le sous-domaine dans les données d'itinéraire (en le récupérant à partir de Request.Url) avant l'évaluation de l'itinéraire.