Che Cassini sia diverso da IIS si sa, e anche Microsoft
consiglia di testare sempre le proprie applicazioni
anche su IIS standard (soprattutto se usate funzionalità che accedono al file
system, ha problematiche di permessi, e similare).
Una delle differenze principali è che tutte le estensioni sono mappate
all'engine di ASP.NET: quindi anche i file css, i js, le immagini jpg, gif e png
passano tutte dalla pipeline degli eventi di ASP.NET.
Questo che problematiche porta?
Innanzitutto un degrado di performance,
perchè il motore di ASP.NET deve analizzare anche le immagini o i video per
capire se deve far partire la pipeline completa. Questo potrebbe non essere un
problema, visto che siamo in ambiente di sviluppo.
Se questo fosse un problema si può aggiungere nel web.config i seguenti HttpHandlers
<httpHandlers>
<!-- Static Files -->
<add verb="GET,HEAD" path="*.css" type="System.Web.StaticFileHandler"/>
<add verb="GET,HEAD" path="*.js" type="System.Web.StaticFileHandler"/>
<add verb="GET,HEAD" path="*.jpg" type="System.Web.StaticFileHandler"/>
<add verb="GET,HEAD" path="*.png" type="System.Web.StaticFileHandler"/>
<add verb="GET,HEAD" path="*.gif" type="System.Web.StaticFileHandler"/>
<add verb="GET,HEAD" path="*.html" type="System.Web.StaticFileHandler"/>
<add verb="GET,HEAD" path="*.xml" type="System.Web.StaticFileHandler"/>
</httpHandlers>
L'altro problema, più critico perchè bloccante, è che l'autorizzazione <deny users="?"/> viene
applicata anche ai file statici: quindi l'eventuale pagina di login o altre
pagine configurate per essere visibili anche gli utenti anonimi non mostrano
immagini e stili perchè sono state bloccate dalla configurazione di
autorizzazione.
Una soluzione è aggiungere al file di configurazione una sezione location che
abiliti la visualizzazione dei singoli file statici anche agli utenti
anonimi:
<location path="style.css">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Ma se avete tanti file statici, invece che aggiungere una sezione location
per ciascuno, potete raggrupparli tutti in sottocartelle apposite e aggiungere
un file web.config che permatta la visualizzazione di tutti i file della
cartella anche agli utenti anonimi.
<configuration>
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</configuration>
Questi sono alcuni delle problematiche che devono essere affrontate se
vogliamo usare il web server integrato di VS 2005: a mio avviso poco rispetto a
tutti i grattacapi che da lo sviluppo di web application usando l'IIS locale
della macchina di sviluppo.