2009-05-16 13 views
16

Estoy tratando de desarrollar un sitio asp.net con múltiples subdominios. Soy nuevo en los sitios web en general, y asp.net en particular. Sin embargo, parece que los subdominios comodín están configurados correctamente con una combinación de entradas DNS y configuración del servidor web, lo que no sucederá en mi máquina de desarrollo. Por lo tanto estoy insertando manualmente entradas en mis archivos de Windows anfitriones:¿Cómo probar subdominios en una máquina de desarrollo? abc.localhost

127.0.0.1 localhost 
127.0.0.1 abc.localhost 
127.0.0.1 xyz.localhost 

Sin embargo, cuando trato de interrogar al propiedad Request.Url no hay subdominio para ser visto. Por ejemplo, si presiono http://abc.localhost:1660/ en el navegador obtengo http://localhost:1660/ de Request.Uri.ToString(); el abc acaba de desaparecer ?!

No sé por qué el archivo hosts funciona así, pero ¿hay algún otro método que pueda usar para obtener subdominios en mi aplicación web local? Gracias a todos.

Tenga en cuenta que solo estoy utilizando el servidor de desarrollo asp.net integrado en lugar de un servidor iis completo. (No puedo tener acceso a un IIS completo este fin de semana, pero aún me gustaría saber si eso ayudaría.)

+0

Creo que esto podría ser un factor de uso del servidor web incorporado. No creo que esto suceda en el servidor IIS general. (Si está ejecutando XP, lo tiene, simplemente configura su sitio web como una aplicación virtual). –

Respuesta

9

usted puede obtener el dominio solicitado con subdominio intacta mediante el uso de "Request.Headers [" CONEXION "]". Aquí hay un método simple que devuelve el Subdominio de la solicitud actual. Este método también asume que tiene un ".COM", ".NET", etc. después del dominio al igual que la web real. Por lo que usted quiere cambiar su archivo HOSTS para incluir "localhost.com", "abc.localhost.com", etc.

public string subdomain() 
{ 
    string host = Request.Headers["HOST"]; 
    if (!string.IsNullOrEmpty(host)) 
    { 
     var parts = host.Split('.'); 
     if (parts.Length > 2) 
     { 
      return parts[0]; 
     } 
    } 
    return string.Empty; 
} 

yo estaba buscando en esta misma cosa, y aquí está un artículo que es lo que realmente me ayudó a resolver esto: https://web.archive.org/web/20090813174916/http://blogs.securancy.com/post/ASPNET-MVC-Subdomain-Routing.aspx

9

No sé sobre los encabezados, pero un truco poco conocido que he usado es que todas las 127. * direcciones son direcciones de localhost, no solo 127.0.0.1. En realidad, puede ejecutar un servidor que escuche en 127.0.0.1 puerto 80, y otra instancia de servidor web que escuche en 127.0.0.2 puerto 80. Entonces, debería nombrar 127.0.0.1 localhost, 127.0.0.2 podría ser abc.localhost (o abc.mydomain) .com para que pueda probar las URLs reales vivas contra su servidor web local), etc.

+2

Un gran consejo. nunca supe 127. * era todo localhost ... genial – ppumkin

9

estoy usando Windows 7, IIS 7.5, VS 2008, SQL Server 2005

yo era capaz de simular con éxito subdominio en localhost comprar poner la siguiente línea en etc/hosts

127.0.0.2 myapp.localhost.com 

y, en IIS He creado un nuevo sitio web con las siguientes modificaciones a la sección de enlaces de:

Hostname = myapp.localhost.com 
IP address = 127.0.0.2 

que también creó un nuevo grupo de aplicaciones, pero no es necesario. Es posible que tenga que cambiar el usuario de autenticación que se utiliza para trabajar en las solicitudes. Tenía errores de permiso de conectividad SQL con el usuario predeterminado de IIS.

IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem 
Cuestiones relacionadas