10
votes

Sous-domaines dynamiques dans ASP.NET MVC

Je suis assez nouveau à ASP.NET et avoir peu d'expérience avec IIS. J'aimerais que chaque utilisateur de mon application reçoive son propre sous-domaine, mais tous utilisent les mêmes contrôleurs. Le sous-domaine contrôlerait alors quel contenu est affiché.

Exemple: P>

user1subdomain.mydomain.com/Whatever
user2subdomain.mydomain.com/Whatever


2 commentaires

En fait, je n'ai utilisé que le serveur Visual Studio intégré jusqu'à présent, le domaine est donc localhost. Je ne peux pas obtenir de sous-domaine.LocalHost / Peu importe de me procurer un contrôleur valide du tout.


Vous ne serez pas avec localhost - pour tester les aspects de gestion de domaine que vous devrez utiliser IIS.


3 Réponses :


1
votes

La plupart du temps pas un problème. Je pense!

En termes d'application / routage Le routage démarre là où le domaine se termine si le domaine se termine si cartographier plusieurs domaines sur la même application n'est pas un problème, cela ne fonctionnera pas.

En termes d'IIS, vous pouvez mapper autant de domaines que vous le souhaitez (bien, il est limité d'être une limite) à un seul site - Je ne sais pas si vous pouvez utiliser une base générique - quelle version de IIS utilisez-vous?

Lorsqu'une demande arrive des événements, vous pouvez accrocher pour regarder le domaine et configurer des paramètres que vous souhaitez (utilisateur par exemple), l'URL racine de la demande est disponible dans le contexte plus tard dans le cycle. Je veux le chercher tôt.

Si vous pouvez faire des caractères génériques, il devient assez trivial - ramassez la demande, validez le sous-domaine contre les utilisateurs de la base de données (s'il n'est pas valide de rediriger sur le site par défaut), définissez l'utilisateur et continuez via le routage normal. < / p>

Si vous ne pouvez pas faire des caractères génériques, le défi consiste à ajouter des en-têtes d'hôte à l'application IIS (site Web) à la volée de votre application car les utilisateurs sont ajoutés à la base de données.


1 commentaires

Avec IIS Si une valeur d'en-tête d'hôte n'est pas spécifiée pour un site, il accepte toutes les valeurs d'en-tête d'hôte, il suffit de vous assurer que vous n'avez que 1 site par carte IP dans IIS de cette manière.



10
votes

MVC n'est pas lié au domaine, juste au chemin (par exemple, http: // domaine / chemin ). < / p>

Pour le faire correctement, vous avez besoin de ce qui suit ...

  1. Configuration DNS Wildcard pour * .Yourdomain.com pointant vers votre serveur.
  2. le site dans la configuration IIS avec Pas d'en-tête d'hôte. Tout autre site hébergé dans ce cas d'IIS sur La même adresse IP doit avoir des en-têtes d'hôte spécifié.
  3. Votre application devra vérifier la Demandez l'en-tête d'hôte sur la page de la page, début de la session ou un autre événement.

0 commentaires

3
votes

J'ai trouvé une réponse plus facile sur le blog de cette personne. Très surpris cela fonctionne aussi bien que cela et que cette solution a plus de 4 ans.

http://blog.mapartenballiauw.be/post/2009/05/20/aspnet-mvc-domain-routing.aspx

Une implémentation de route personnalisée: xxx

et voici comment il peut être utilisé. xxx


0 commentaires