2008-11-07 14 views
5

En IIS 6, ¿es posible tener varios nombres de dominio apuntando a la misma aplicación web y servir CSS de manera condicional desde la aplicación web basada en el nombre de dominio?Múltiples dominios, la misma aplicación web en IIS 6

Necesito alojar cientos de "máscaras" diferentes en la misma aplicación web, con la piel dependiendo del nombre de dominio, y realmente no quiero lanzar toneladas de aplicaciones web.

Respuesta

7

+1 a rhinof para agregar identidades múltiples, pero crear un HttpModule es un poco exagerado. Simplemente puede cambiar la URL de la etiqueta en una página maestra examinando el contenido de Request.Headers ["HOST"]

+0

Esto parece muy prometedor. –

+0

Gracias. Lamento que me haya llevado tanto tiempo cerrar esto. –

2

1) agregue los nombres de dominio deseados como identificadores de sitio web en la página de propiedades avanzadas de la pestaña Sitio web.

2) mapear la extensión .css a la aspnet_isapi.dll

3) escribir un HttpModule que volver a escribir la url para solicitudes css basado en el nombre de dominio

4) permitirá a su módulo a través web.config

+0

¿Hay alguna manera de hacerlo mediante API? Habrá cientos. –

+0

Si solo tiene un sitio en su servidor. Establezca el sitio como predeterminado y no establezca ninguna identidad. Todas las solicitudes, independientemente del dominio, irán al sitio web predeterminado. –

+0

@Pittsburgh DBA por medio de la API, ¿quiere decir a través de COM o utilizando la API WIN32 nativa y no a través del entorno .NET administrado? Si es así, puede escribir un filtro isapi nativo que realizará la reescritura y lo registrará con IIS. google en las siguientes palabras clave isapi filters iis – rhinof

1

Si usa temas, puede cambiar el tema, cambiando así el css, etc. en la página.PreInit dependiendo del valor del dominio en Request.ServerVariables ["Url"] (nota, puede haber una mejor variable de servidor para obtener el nombre de dominio, búscalo).

Si no está utilizando temas, puede cambiar el archivo css programáticamente comprobando la misma variable del servidor.

MasterPages será tu amigo aquí.

Espero que te empuje en la dirección correcta. Es posible y común.

+0

No estoy familiarizado con los temas. ¡Mirando ahora! –

1

Si va a tener contenido central diferente en los sitios, le sugiero poner un identificador global para rastrear en qué sitio está un usuario y poner sus datos en una base de datos en algún lugar para referencia contra ese identificador. Esta es, de lejos, la forma más fácil de ampliar la aplicación si cada instancia es única.

Puede poner esto en una clase y tener un patrón común para averiguar a dónde deben asignarse las cosas. Sugiero que una vez que conozca la asignación para almacenar en caché eso y luego podrá hacer lo que quiera sin la latencia de miles de aplicaciones o llamadas a bases de datos.

También necesitará agregar este parámetro en cualquier llamada general de base de datos para que solo obtenga resultados para el dominio que se está hospedando. Tengo un poco de experiencia con esto, así que deja algunos comentarios si quieres ver algunos ejemplos específicos de codificación.

Puede aplicar esta técnica a cualquier archivo, hoja de estilo CSS u objeto con fines de referencia.

+0

Muchas gracias. Este es un comentario profundo. Todavía estoy tratando de elegir una respuesta "aceptada". Te voté. –

1

Sí, esto debería ser simple de hacer. Me inclino por el enfoque de mapear los nombres de dominio en su aplicación usando encabezados de host en IIS. Luego, como dijo Martin, interrogue a Request.Headers ["HOST"] en su aplicación para cambiar la hoja de estilo.

Cuestiones relacionadas