Ereditarietà di configurazione

Quando il server riceve una richiesta per una risorsa Web specifica, in ASP.NET vengono calcolate le impostazioni di configurazione per quella risorsa in modo gerarchico utilizzando tutti i file di configurazione posizionati nel percorso della directory virtuale per l'URL richiesto. È possibile che sia presente, ad esempio, un sito Web con la seguente struttura di file, in cui la directory principale dell'applicazione corrisponde alla directory virtuale dell'applicazione (Vdir.)

In genere, l'ultima impostazione di configurazione sovrascrive le impostazioni per la stessa sezione fornite nelle directory padre, sebbene il gestore della sezione possa implementare uno schema di ereditarietà differente.

L'amministratore, ad esempio, può definire le impostazioni dell'applicazione in modo che tutti gli utenti possano accedere alle risorse ASP.NET nella directory principale dell'applicazione, ovvero la directory fisica mappata nella directory virtuale dell'applicazione, mentre solo gli utenti selezionati possano accedere alle risorse ASP.NET nelle due sottodirectory.

Si supponga che nella directory SubDir1 sia presente un file Web.config e nessun file sia presente nella directory principale dell'applicazione o nella directory SubDir2. In questo caso, in ASP.NET vengono utilizzati due file di configurazione. Il file di livello più elevato è quello che si trova nella directory directory_di_sistema\Microsoft .NET \Framework\numero_versione\CONFIG. Il file, denominato Machine.config, si trova a livello di computer e tutte le directory e sottodirectory ASP.NET ne ereditano le impostazioni. Machine.config viene fornito con .NET Framework e contiene numerose impostazioni ASP.NET predefinite. L'impostazione predefinita per la sezione di configurazione della protezione di questo file consente a tutti gli utenti di accedere a tutte le risorse URL. Nessun file di configurazione nella directory principale dell'applicazione di esempio modifica la protezione, quindi tutti gli utenti hanno accesso alle risorse ASP.NET in essa contenute, poiché la directory eredita dal file di configurazione a livello di computer. Se il file Web.config nella directory SubDir1 contiene una sezione di configurazione della protezione che consente l'accesso solo a determinati utenti, la directory SubDir2 eredita questa impostazione. Tutti gli utenti, pertanto, hanno accesso alle risorse ASP.NET nella directory principale dell'applicazione, ma solo determinati utenti hanno accesso alle risorse ASP.NET in SubDir1 e SubDir2.

Le impostazioni di configurazione per le directory virtuali sono indipendenti dalla struttura delle directory fisiche. Le directory virtuali devono essere organizzate con estrema attenzione per evitare problemi di configurazione. È possibile avere, ad esempio, un'applicazione denominata MyResource.aspx con la seguente struttura di directory fisiche.

C:\Subdir1\Subdir2\MyResource.aspx

Si supponga che un file di configurazione sia collocato in SubDir1, che una directory virtuale denominata Vdir1 sia associata a c:\Subdir1 e un'altra directory virtuale denominata Vdir2 sia associata a c:\Subdir1\Subdir2. Se un client accede alla risorsa posizionata fisicamente in c:\Subdir1\Subdir2\MyResource.aspx utilizzando l'URL http://localhost/vdir1/subdir2/MyResource.aspx, la risorsa eredita le impostazioni di configurazione da Vdir1. Se il client però accede alla stessa risorsa utilizzando l'URL http://localhost/vdir2/MyResource.aspx, essa non eredita le impostazioni da Vdir1. Di conseguenza, la creazione di directory virtuali così strutturate non è consigliata poiché può determinare risultati imprevisti o perfino un errore dell'applicazione.

Nota   Il sistema di configurazione ASP.NET si applica solo alle risorse ASP.NET, ovvero quelle registrate per essere gestite da ASP.NET utilizzando Aspnet_isapi.dll. Il sistema di configurazione non fornisce l'autorizzazione per le risorse non ASP.NET per impostazione predefinita. I file ASP, HTML, TXT, GIF e JPEG, ad esempio, sono accessibili da parte di tutti gli utenti. Nell'esempio precedente, se l'esplorazione delle directory è attivata e non sono impostate ulteriori restrizioni, tutti gli utenti possono visualizzare i file non ASP.NET posizionati nella directory principale dell'applicazione, SubDir1 e SubDir2. Per ulteriori informazioni sulla protezione ASP.NET, vedere Protezione di applicazioni Web ASP.NET.

Vedere anche

Configurazione di ASP.NET | Configurazione di applicazioni