2009-05-16 19 views
16

Sto cercando di sviluppare un sito asp.net con più sottodomini. Sono nuovo sui siti Web in generale e su asp.net in particolare. Tuttavia, sembra che i sottodomini di caratteri jolly siano impostati correttamente con una combinazione di voci DNS e configurazione del server Web, cosa che non accadrà sul mio computer di sviluppo. Perciò sto inserendo manualmente le voci nei miei file di Windows hosts:Come testare i sottodomini su una macchina di sviluppo? abc.localhost

127.0.0.1 localhost 
127.0.0.1 abc.localhost 
127.0.0.1 xyz.localhost 

Tuttavia, quando provo ad interrogare il Request.Url proprietà v'è alcun sottodominio di essere visto. Ad esempio, se prendo lo http://abc.localhost:1660/ nel browser ricevo http://localhost:1660/ da Request.Uri.ToString(); lo abc è appena finito ?!

Non so perché il file hosts funzioni in questo modo, ma c'è qualche altro metodo che posso usare per ottenere sottodomini nella mia applicazione web locale? Grazie a tutti.

Nota che sto utilizzando solo il server di sviluppo asp.net incorporato piuttosto che un server iis completo. (Non riesco ad accedere a un IIS completo questo fine settimana, ma mi piacerebbe sapere se sarebbe d'aiuto.)

+0

Penso che questo potrebbe essere un fattore di utilizzo del server web integrato. Non credo che ciò accadrebbe sul server IIS generale. (Se stai usando XP ce l'hai, hai appena impostato il tuo sito web come applicazione virtuale). –

risposta

9

È possibile ottenere il dominio richiesto con Subdominio intatta utilizzando "Request.Headers [" HOST "]". Ecco un semplice metodo che restituisce il sottodominio della richiesta corrente. Questo metodo presuppone anche che tu abbia un ".COM", ".NET", ecc. Dopo il dominio proprio come il web reale. Quindi, ti consigliamo di modificare il file HOSTS per includere "localhost.com", "abc.localhost.com", ecc

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; 
} 

ero alla ricerca su questa cosa molto ed ecco un articolo che è ciò che in realtà mi ha aiutato a capire questo: https://web.archive.org/web/20090813174916/http://blogs.securancy.com/post/ASPNET-MVC-Subdomain-Routing.aspx

9

Non so le intestazioni, ma un trucco poco conosciuto che ho usato è che tutti gli indirizzi 127. * sono indirizzi localhost, non solo 127.0.0.1. È possibile eseguire un server in ascolto sulla porta 127.0.0.1 80 e un'altra istanza del server Web in ascolto sulla porta 127.0.0.2 80. Quindi, si dovrebbe nominare 127.0.0.1 localhost, 127.0.0.2 potrebbe essere abc.localhost (o abc.mydomain .com in modo da poter testare le reali URL dal vivo contro il vostro server web locale), ecc

+2

Ottimo suggerimento. mai saputo 127. * era tutto localhost .. figo – ppumkin

9

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

sono stato in grado di simulare con successo sottodominio su localhost acquistare mettendo la seguente riga nel etc/hosts

127.0.0.2 myapp.localhost.com 

e, in IIS ho creato un nuovo sito web con le seguenti modifiche alla sezione binding:

Hostname = myapp.localhost.com 
IP address = 127.0.0.2 

Ho anche creato un nuovo pool di applicazioni, ma non è necessario. Potrebbe essere necessario modificare l'utente auth utilizzato per lavorare sulle richieste. Avevo errori di permessi di connettività SQL con l'utente IIS predefinito.

IIS>Application Pools>>Right Click on your pool>Advanced Settings>Identity = LocalSystem 
Problemi correlati