2011-01-11 44 views
9

Estoy escribiendo una aplicación SaaS en C#/ASP.NET, alojada con IIS7. Quiero crear un subdominio personalizado para cada cliente que se registre, es decir, fred.mydomain.com, bob.mydomain.com, cada uno de los cuales apuntará a la misma aplicación, solo que con un aspecto diferente por cliente.¿Cómo crear subdominios para IIS7 mediante programación?

¿Cómo creo estos subdominios mediante programación?

Respuesta

6

Uso URL Rewrite para IIS7 para mapear todas las solicitudes como user.mydomain.com (donde el usuario no es WWW, correo electrónico u otros subdominios reales existentes) a mydomain.com/myapp?id=user Luego, en el mango de la escritura lo que necesita tematización.

No necesita agregar reglas para cada usuario creado. Solo crea una regla general para hacerlo.

Y, también, en su servidor DNS, necesita reenviar * .midominio.com (donde * no es www, correo u otros subdominios reales existentes) a IP de mydomain.com. Esto es bastante sencillo. Ya tiene registros DNS para los subdominios existentes. Simplemente agregue * .midominio.com y apunte a mydomain.com. Esto hará que el DNS sea parte del truco. Otra parte está en el URL Rewrite

+0

Sarwar, tengo una pregunta de seguimiento, que espero que pueda ayudar con: http://stackoverflow.com/q/5394632/7850 –

6

Al darse cuenta, por supuesto, que alguien ya respondió su pregunta diciéndole que haga redirecciones, parece que la manera más fácil podría ser simplemente agarrar la variable del servidor host.

  1. Configuración de IIS para que todas las peticiones entrantes (independientemente del encabezado de host ) apuntan a ésta aplicación. Todos los sitios que o bien tienen un nombre de host único o un puerto único en IIS, por lo que sería definir el sitio:

    1. el sitio de unión al puerto predeterminado de 80.

    2. Si no se proporciona nada en el Campo de nombre de host. Esta es también la forma en que el Sitio web predeterminado se configura de manera predeterminada cuando instala IIS por primera vez.

  2. averiguar la dirección IP estática de su servidor, y dicen cada nuevo cliente que se registre para señalar el DNS para su dominio a esa IP. O bien, si es el propietario del nombre de dominio, configure una entrada DNS catchall: * .midominio.com - apunta a la dirección IP de su servidor.

  3. Dentro de su aplicación, verifique el encabezado actual del host para proporcionar un página principal o maestra diferente.

Esto debe agarrar el encabezado de host desde dentro del código:

Request.ServerVariables["HTTP_HOST"] 

Desde allí se podría poner a prueba su valor frente a un conjunto de valores de base de datos que tiene que determinar qué MasterPage/hoja de estilos CSS/etc usted necesita cargar basado en esa URL. Tenga en cuenta que si realiza un catchall como este, tendrá que dar cuenta de una URL mal escrita que, por lo tanto, no tendría un aspecto que coincida con ella.

Cuestiones relacionadas