Cassini e le pagine statiche

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.

powered by IMHO 1.3

posted @ giovedì 6 luglio 2006 13:34

Print
Comments have been closed on this topic.
«settembre»
domlunmarmergiovensab
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789