A parer mio questo è un argomento molto vasto, in questo articolo voglio solamente indicare le funzionalità di questo file e la sua suddivisione standard.

Questo file ha una principale caratteristica, che è quella di sovrascrivere le impostazioni di Machine.config e di tutti i file web.config delle directory superiori. Quindi le impostazioni di un web.config di una sotodirectory sovrascrivono quelle del config della directory superiore e cosi via ...
Il primo file da creare sarà quello nella directory principale della Applicazione.

Vediamo nel dettaglio i tag e i loro attributi :

Se non volgiamo che le impostazioni vengano sovrascritte dai successivi .config . Quindi per ogni tag location possiamo inserire un tag System con tutte le configurazioni opportune per quel path. E' chiaro che una gestione dei permessi cosi' articolata va ben pianificata.

'Location
<location path="example_folder" allowOverride="false">
	<system.web
	...

L' elemento Trace viene utilizzato per la gestione del Trace dell' applicazione a run-time, che se attiva puó essere visualizzata nel file Trace.axd.

<trace ...
enabled="true¦false"		'abilita o meno
localOnly="true¦false"		'solo per utenteweb locale o no
pageOutput="true¦false"		'se il trace in fondo alla pag.
requestLimit="int32"		'numero richieste per .axd
traceMode="SortByTime¦SortByCategory"	'per tempo o alfabetico

Se volgiamo implementare la globalizzazione allora dobbiamo prestare attenzione all' elemento Globalization, il quale ci consente di impostare la lingua, la codifica delle richieste ...

<globalization ...
culture="it-IT, de-DE"
fileEncoding="UT-9 ..."		'codifica per file
requestEncoding=""			'codifica richieste
responseEncoding=""			'codifica per risposte
uiCulture=""				'la lingua corrente

Questo modulo io non lo uso mai ma puó tornare utile per la gestione a runtime del modulo http.

<httpRuntime
appRequestQueueLimit="int32"	'numero di richieste in coda
executionTimeout="seconds"		'secondi prima di timeout pag
maxRequestLength="Kb"			'dimensione max file
minFreeThreads="int32"			'numero min thread liberi
minLocalRequestFreeThreads		numero in thread liberi (def 4)
useFullyQualifiedRedirectUrl	"true¦false" per url relativi

Per la gestione della compilazione il .config ci mette a disposizione un elemento molto articolato. Normalmente vengono usati solamente gli attributi debug e defaultLanguage e gli altri vengono ereditati, chiaramente, dal Machine.config. Ma vediamo bene nel dettaglio la parte compilation.

<compilation
batch="true¦false"		'compila tutto subito
bachtTimeout="second"	'se lo supera compilazione x richiesta
debug="true¦false"		'include info debug nell' assembly
defaultLanguage="vb"	'linguaggio di compilazione
explicit="true¦false"	'lo usa o meno in compil.
maxBatchSize="pages"	'numero di pag
maxBatchGeneratedFileSize="kb"
numRecompilesBeforeAppRestart="int32"	'quante volte ricom.
strict="true¦false"		'lo usa in compilazione
tempDirectory="path"		'directory temporanea

Adesso dobbiamo prendere in esame i due sotto-tag, uno è compilers e viene usato per gestire il compilatore, mentre il secondo è assemblies e logicamente viene usato per gestire la aggiunta di assemblies. Li vediamo insieme.

<compilers
extension="file extension"	'estensione file codice(cs,vb,js)
language="vb"				'linguaggio
compilerOptions=""			'vedere SDK
type=".NET type"			'nome assembly e versione
warningLevel="01234"		'messaggi errore


<assemblies
<add assembly="name"		'aggiunge
<remove assembly="name"		'rimuove
<clear />					'rimuove tutti gli assemblies

Per il momento mi fermo qui, nel prossimo articolo voglio affrontare la parte di web.config che viene usato più spesso, ovvero la gestione della pagina, dell' accesso, i permessi e quant' altro ...
Voglio infine precisare che l' argomento è vasto e non credo che per passare l' esame 70-305 sia necessario conoscere alla perfezione tutti i tag, ma sicuramente quelli principali più usati.