Vediamo in questo tutorial gli aspetti più comuni del file Web.config di ASP.Net.
1 - Caratteristiche generali:
- E' il file di configurazione delle applicazioni ASP.Net.
- Si basa su uno standard XML che lo rende potente e semplice allo stesso tempo.
- Essendo basato su uno standard XML, è case sensitive.
- Permette l'installazione di una applicazione sul server, semplicemente uploadando i file.
- Sono ammessi più file Web.config per una sola applicazione, uno per ogni directory,
- Ogni sub-directory eredita le impostazioni della cartella padre.
- Tutti gli elementi sono nidificati dentro un elemento superiore di nome <configuration>.
- Tutti gli elementi non necessari possono essere omessi.
- E' diviso in sezioni, ognuna con un compito preciso.
2 - Sezioni principali
Le sezioni principali, nidificate dentro il tag <configuration>, sono due:
- <system.web>: contiene tutti gli elementi di configurazione predefiniti di ASP.net.
- <appSettings>: contiene eventuali costanti di configurazione introdotte dal programmatore e inerenti la specifica applicazione. Non sono configurazioni predefinite di ASP.Net.
Ecco un esempio di file Web.config vuoto:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
</system.web>
<appSettings>
</appSettings>
</configuration>
2.1 - system.web
Contiene tutte le impostazioni di configurazione che ASP.Net mette a disposizione. Vedremo ora le sezioni più importanti. Alcune sezioni verrano presentate direttamente con un esempio e ne verrano mostrate solo le caratteristiche più comuni in ambito di siti web. Non si deve quindi intendere questa trattazione come completa ed esaustiva.
2.1.1 - authentication e authorization
Sono utilizzati per gestire l'autenticazione in un'applicazione. Non vengono trattati in questo contesto in quanto oggetto di questo tutorial sull'autenticazione in ASP .Net.
2.1.2 - compilation
In fase di test dell'applicazione si dovrebbe inserire la seguente riga nel file di configurazione:
<compilation debug="true" />. Se si sta utilizzando Visual Studio, questa impostazione può essere trascurata. Quando si esegue un applicazione sul server in fase di produzione, è opportuno impostare a "false" la stessa riga.
2.1.3 - customErrors
Consente, tra le altre cose, di definire delle pagine di errore personalizzate. Ecco un esempio:
<customError mode="On" defaultRedirect="/error.html">
<error statusCode="404" redirect="/not_found.html" />
</customError>
In questo modo abbiamo definito una pagina di errore generica di nome "error.html" e una pagina di errore "not_found.html" che viene visualizzata al posto dell'errore 404 del server. Avremmo potuto ridefinire una pagina diversa per ogni errore del server.
2.1.4 - globalization
Configura le impostazioni internazionali e di lingua. Per l'italiano è sufficiente impostarlo in questo modo:
<globalization
culture="IT-it"
uiCulture="IT-it"
requestEncoding="iso-8859-1"
responseEncoding="iso-8859-1" />
2.1.5 - sessionState
Permette di configurare lo stato della sessione. In questo esempio impostiamo la durata di una sessione a 10 minuti (timeout), diciamo che questa verrà elaborata dal processo (mode) e che l'ID di sessione verrà mantenuto tramite un cookie (cookieless).
<sessionState
timeout="10"
mode="Inproc"
cookieless="false" />
2.1.6 - httpRuntime
Serve per definire alcune impostazioni di esecuzione HTTP. Ecco un esempio..
<httpRuntime
appRequestQueueLimit="100"
executionTimeout="60"
maxRequestLength="2048" />
.. con la spiegazione:
- appRequestQueueLimit specifica il limite massimo di richieste che ASP.Net può gestire. Le richieste in eccesso vengono rifiutate.
- executionTimeout imposta il tempo massimo (in secondi) per elaborare una richiesta. Se il server supera questo tempo la richiesta viene interrotta.
- maxRequestLength imposta le dimensione massime (in Kilobyte) dei file caricati tramite form.
2.1.7 - identity
Imposta l'identità con cui viene eseguito ASP.Net.
<identity impersonation="true|false"
name="username"
password="pass" />
- impersonation impostato a true: se name e password sono omessi, ASP.net verrà eseguito con l'identità fornita da IIS, altrimenti con quella specificata da name e password.
- impersonation impostato a false: ASP.Net viene eseguito con l'account System.
2.1.8 - machineKey
Consente di configurare le chiavi da utilizzare per la crittografia e la decrittografia dei dati dei cookie di autenticazione dei form e dei dati dello stato di visualizzazione e per la verifica dell'identificazione dello stato delle sessioni out-of-process.
<machineKey validationKey="AutoGenerate|value"
decryptionKey="AutoGenerate|value"
validation="SHA1|MD5|3DES" />
Se validationKey e decryptionKey vengono impostati ad AutoGenerate, la chiavi utilizzate, rispettivamente, per convalidare e codificare i dati, vengono create automaticamente da ASP.Net. In alternativa è possibile specificarne una propria. Questa opzione è utile qualora si necessita che più server differenti condividano le stesse chiavi (es: Server Farm).
I tre possibili valori di validation specificano l'algoritmo utilizzato per la crittografia.
2.2 - appSettings
Può contenere variabili di configurazione, inserite dentro il tag <add key>, che potranno essere lette a runtime dall'applicazione. Può essere usata, ad esempio, per inserire stringhe di connessione al Database, percorsi di file o qualunque altra cosa riteniamo utile. Vediamone un esempio.
<appSettings>
<add key="Username" value=”user” />
<add key="Password" value=”pass” />
</appSettings>
Da codice possiamo poi leggere i valori dichiarati in questo modo:
string user = ConfigurationSettings.AppSettings["Username"];