L’errore 404 in ASP.Net e IIS

Dopo un precedente articolo sull’errore 404 lato SEO, oggi parlo dell’errore 404 lato ASP.Net e IIS. Il perchè bisogna configurarlo l’ho spiegato nell’articolo sopra citato, come configurarlo nell’ambiente Microsoft lo faccio ora.

imageEsistono due modi, complementari, per configurare l’errore 404 in ASP.Net /IIS6. Complementari perchè uno non esclude l’altro.

Data l’architettura del framweork, una volta che la richiesta giunge al server, questa a seconda dell’estenzione che il file richiesto ha, può subire un dirottamente all’interno della pipeline.

I file statici, quindi i file .htm e .html (ma anche i .css e tutte le immagin) verranno smistati automaticamente verso l’handler che si preoccupa di gestire i file statici (StaticFileModule), mentre i file con estenzione .aspx verranno gestiti dall’handler aspnet_isapi.

imageDati questi due percorsi differenti, ne consegue che qualora venga inoltrata una richiesta per una risorsa non esistente sul server di destinazione, la risposta 404 procederà per due vie completamente distinte.

Quella dei file statici verrà inoltrata direttamente ad IIS, il quale ritornerà al client la pagina associata al codice di errore 404 configurata all’interno della proprietà del sito.

Di default viene restituita una pagina brutta e asettica come quella che si vede qui sopra, ma agendo nelle proprietà di configurazione del sito si può impostare un qualsiasi tipo di risorsa, anche appartenente ad un altro sito web.

image

Nel caso di una risorsa .aspx non trovata, le cose sono leggermente diverse.

A preoccuparsi di restituire una pagina d’errore è lo stesso framework.

Ovviamente, di default, la gestione delle pagine non trovate non è abilitata, e nel caso viene mostrata una pagina d’errore (per alcuni) più criptica e sempre antiestetica.

image

Per poter abilitare la gestione delle pagine non trovate, in questo caso bisogna agire all’interno del file Web.Config, andando a creare, laddove non esista già, una sezione CustomErrors.

Un esempio può essere come quello qui sotto:



In questo caso, il framework reindirizzerà la richiesta verso il file statico 404.html. Nulla vieta di mettere una pagina con estenzione .aspx che faccia del lavoro per noi, tipo mandare une e-mail all’amministratore del sito, piuttosto che registrare degli eventi in un file di log, ecc.

Medesimo discorso vale anche per la configurazione del Custom Error statico. Impostando una risorsa di tipo URL si può specificare un percorso assoluto e rimandare il tutto ad una pagina dinamica, con il vantaggio che si potrà creare una sola pagina e gestire in entrambe i casi il problema della risorsa non trovata.