In questi giorni ho combattuto con un problema che limitava le capacità di debug, di un'applicazione web, utilizzando il WebServer integrato in Visual Studio 2008. Ho trovato una soluzione ma non sono ancora certo delle cause che hanno portato al malfunzionamento ed al mio successivo workaround. Ecco la descrizione del problema e di come applicare il workaround.
Sistema operativo
Microsoft Windows Vista Business 32bit in inglese
Problema
Lanciando il debug di un'applicazione web da Visual Studio 2008 Team Suite, impostata per utilizzare il web server integrato nell'ambiente di sviluppo, ottenevo il seguente errore: Internet Explorer cannot display the webpage (vedi immagine).
Facendo vari test ho scoperto che:
- modificando l'url da http://localhost:8088/ in http://127.0.0.1:8088/, la pagina funzionava correttamente e io potevo continuare il debug senza problemi.
- il problema si presentava anche avviando l'applicazione di configuratione ASP.NET Configuration.
- utilizzando Firefox il problema non si presentava anche utilizzando l'url http://localhost:8088.
La prima cosa che mi è venuta in mente è stato verificare il file di hosts del mio computer che però ritenevo corretto visto che Firefox eseguiva la risoluzione del nome in ip in modo corretto e che, se usavo IIS, il problema non si presentava anche sotto IE7. Questa convinzione era avvalorata anche dal fatto che, quanto presente nel mio file di hosts, era identica a quella di altri computer in cui il problema non si presentava.
Analizzando le varie possibilità; leggendo un numero spropositato di articoli e post; testando n soluzioni; rompendo le scatole ad amici, evangelist Microsoft, ecc; alla fine ho trovato come risolvere il problema anche se non sono certo che la causa scatenante sia quella che indico qui.
Causa ipotizzata
Presenza del servizio Eset HTTP Server (anche se stoppato) installato con ESET NOD32 Antivirus 3.0.621.0.
Soluzione 1: utente senza diritti amministrativi con Firefox installato
Se non avete diritti amministrativi sul PC che utilizzate ed avete Firefox installato, l'unica soluzione che potete utilizzare per ovviare al problema è impostarle Firefox come browser di default in modo che sia il browser chiamato anche dal webserver integrato in fase di debug. Per farlo utilizzate le opzioni di Firefox per abilitare il controllo del fatto che sia il default browser. Avviate Firefox e quindi confermate la seguente schermata:
Soluzione 2: utente con diritti amministrativi e file host con record ::1 localhost
Avviate notepad con diritti amministrativi (Run as administrator). Quindi aprite il file hosts che si trova al seguente indirizzo: C:\Windows\System32\drivers\etc . Il vostro file, salvo che non lo abbiate precedentemente modificato, dovrebba apparire simile a questo:
# Copyright (c) 1993-2006 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
127.0.0.1 localhost
::1 localhost
Commentate la riga del record ::1 localhost come indicato qui:
# Copyright (c) 1993-2006 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
127.0.0.1 localhost
#::1 localhost
Questo è stato sufficiente, nel mio caso, per risolvere il problema.
Sarò grato a chiunque che riscontrando lo stesso problema o, a parita di configurazione, non riscontrandolo volesse commentare questo post con la sua esperienza diretta in modo da rendere statisticamente più precisa la determinazione della causa che genera il problema qui indicato.