mercoledì 3 gennaio 2007

App_Offline.htm una preoccupante inutility

Una delle nuove feature di ASP.NET 2.0 aggiunta all'ultimo minuto, come spega ScottGu in questo post, è la pagina App_Offline.htm che se la salviamo nella root di un'applicazione web la nostra applicazione farà shutdown, scaricherà l'appDomain e inizierà a rispondere a tutte le richieste inviando questo file anziché la pagina realmente richiesta dall'utente. Tutto questo finché il file non sarà cancellato, spostato o rinominato.

All'inizio ho pensato che questa feature fosse interessante ed utile, ma quando ho iniziato ad utilizzarla mi sono reso conto della sua quasi totale inutilità. Da un punto di vista è molto comodo poter spostare in produzione gli aggiornamenti senza che alcun utente sia connesso, ma finita questa operazione, che in genere dura pochi secondi, c'è bisogno di fare un giro di test per controllare il corretto funzionamento di tutto. Purtroppo questa fase non è attuabile perchè come si prova ad accedere l'applicazione reindirizza alla pagina di Offline. Se però si elimina la pagina, tutti gli utenti possono entrare e addio test finali! Visto che i test finali in genere prendono diverso tempo, sicuramente molto più del semplice aggiornamento dei file, direi che questa feature è molto monca e poco utile.

Io non la trovo una "bella feature" perché se in qualche modo qualcuno che vuole fare hacking del nostro server riesce a eseguire l'upload di un file con quel nome, questa feature diventa uno strumento di denial of service.

Partendo dall'idea di voler comunque mettere l'applicazione offline in maniera gradevole per l'utente, ecco che si arriva alla naturale conclusione che un HttpModule è quello che ci vuole. Si crea una sezione personalizzata nel web.config che serve a specificare se l'applicazione è offline. Nell'HttpModule si gestisce l'evento AuthorizeRequest e se l'utente ha i requisiti per "girare offline" allora viene autorizzato ad entrare, altrimenti viene rimandato alla pagina offline.

Nessun commento: