Scenari di configurazione ASP.NET
Aggiornamento: novembre 2007
Quando il server riceve una richiesta per una risorsa Web specifica, in ASP.NET ne vengono calcolate le impostazioni di configurazione in modo gerarchico utilizzando tutti i file di configurazione che si trovano nel percorso della directory virtuale per l'URL richiesto. Le impostazioni di configurazione più locali eseguono l'override di quelle presenti nei file di configurazione padre.
Scenario di configurazione 1
È possibile, ad esempio, che esista un sito Web con la struttura di file fisici che segue, in cui la directory Application Root corrisponde alla directory virtuale dell'applicazione.
Generalmente l'ultima impostazione di configurazione sovrascrive le impostazioni relative alla stessa sezione fornita nelle directory padre. Nel caso di un elemento dell'insieme, le impostazioni non vengono sottoposte a override bensì aggiunte all'insieme.
Nota: |
---|
Un gestore di sezione personalizzato potrebbe implementare uno schema di ereditarietà diverso. |
Si supponga che nella directory SubDir1 sia presente un file Web.config e che la directory Application Root o SubDir2 non contenga alcun file. In questo caso in ASP.NET vengono utilizzati tre file di configurazione per calcolare le impostazioni di configurazione per la directory SubDir1. Il file di livello più elevato è quello che si trova nella directory %systemroot%\Microsoft .NET \Framework\NumeroVersione\CONFIG. Tale file, denominato Machine.config, si trova a livello di computer. Tutte le applicazioni .NET Framework in cui viene eseguita la versione specificata di .NET Framework (NumeroVersione) ereditano le impostazioni di questo file. Il file successivo di livello più elevato è il file Web.config principale, che si trova nella stessa posizione. Tutte le applicazioni ASP.NET in cui è in esecuzione la versione specificata di .NET Framework ne ereditano le impostazioni. Il terzo file di configurazione è Web.config, che si trova nella directory SubDir1.
Si supponga che il file Web.config presente nella directory SubDir1 contenga l'elemento anonymousIdentification con l'attributo enabled impostato su true. L'impostazione predefinita per l'attributo enabled è false. Si tratta di un'impostazione predefinita interna e non viene specificata in alcun file di configurazione principale. Poiché le directory Application Root o SubDir2 non contengono alcun file di configurazione che modifichi l'elemento anonymousIdentification, gli utenti anonimi non hanno accesso alle risorse ASP.NET presenti in tali directory. L'accesso è invece consentito nella directory SubDir1.
Nota sulla sicurezza: |
---|
Il sistema di configurazione ASP.NET si applica solo alle risorse ASP.NET, ovvero le risorse registrate per essere gestite da ASP.NET mediante Aspnet_isapi.dll. Per impostazione predefinita, l'autorizzazione non viene concessa a risorse non ASP.NET. 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 delle applicazioni Web ASP.NET. |
Scenario di configurazione 2
Il sito Web riportato di seguito presenta una struttura di file in cui la directory virtuale dell'applicazione viene mappata alla directory principale dell'applicazione (MyAppRootDir).
MyAppRootDir
SubDir1
SubDir1A
SubDir2
Ad eccezione delle condizioni descritte nella sezione relativa alle restrizioni nell'ereditarietà ASP.NET in Gerarchia ed ereditarietà dei file di configurazione di ASP.NET, un'impostazione di configurazione presente in una directory esegue l'override delle impostazioni scritte nelle directory padre. È possibile, ad esempio, configurare le impostazioni dell'applicazione per far sì che l'accesso alle risorse ASP.NET presenti in MyAppRootDir e SubDir2 venga concesso a tutti gli utenti e che l'accesso alle risorse ASP.NET presenti in SubDir1 e SubDir1A venga invece concesso solo a utenti selezionati. A tale scopo, è necessario effettuare le seguenti operazioni:
Non modificare MyAppRootDir. Le risorse ASP.NET presenti in MyAppRootDir ereditano le impostazioni predefinite del file Machine.config, una delle quali consente l'accesso anonimo. In questa fase, MyAppRootDir e le tre sottodirectory ereditano questa impostazione dell'autenticazione.
Inserire un file Web.config in SubDir1 con l'autenticazione impostata per concedere solo a utenti selezionati l'accesso a SubDir1. In questo modo viene eseguito l'override dell'accesso anonimo consentito dall'impostazione nel file Machine.config e l'ereditarietà viene applicata alla directory sottostante SubDir1A. SubDir2, che si trova allo stesso livello di SubDir1, non eredita l'impostazione di autenticazione in SubDir1.
Tutte le applicazioni ASP.NET ereditano le impostazioni predefinite nel file Web.config al livello Web principale. 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 SubDir1A eredita questa impostazione. Tutti gli utenti, pertanto, hanno accesso alle risorse ASP.NET presenti nella directory principale dell'applicazione e in SubDir2, ma solo determinati utenti hanno accesso alle risorse ASP.NET in SubDir1 e SubDir1A.
Scenario di configurazione 3
Le impostazioni di configurazione delle directory virtuali, ovvero i nomi descrittivi delle directory che semplificano i percorsi di accesso e nascondono i nomi delle directory reali, sono indipendenti dalla struttura delle directory fisiche. Di conseguenza, le directory virtuali devono essere organizzate con attenzione per evitare problemi di configurazione. È possibile ad esempio impostare directory virtuali per recuperare la pagina ASP.NET denominata MyResource.aspx dalla struttura di directory fisica seguente:
MyDir
SubDir1 (mapped from VDir1)
SubDir1A (mapped from VDir1A)
MyResource.aspx
SubDir2
In questo esempio un file Web.config si trova in SubDir1 e un altro file Web.config si trova in SubDir1A. Se un client accede a C:\Subdir1\Subdir1A\MyResource.aspx utilizzando l'URL http://hostlocale/vdir1/subdir1A/MyResource.aspx, la risorsa eredita le impostazioni di configurazione da Vdir1. Se tuttavia il client accede alla stessa risorsa utilizzando l'URL http://hostlocale/vdir1A/MyResource.aspx, non eredita le impostazioni da Vdir1. La creazione di directory virtuali così strutturate non è consigliata in quanto può determinare risultati imprevisti o anche un errore dell'applicazione.
Internet Information Services (IIS) è il server Web per tutte le risorse pubblicate sul Web. Il sistema di configurazione ASP.NET si applica solo alle risorse ASP.NET, ovvero le risorse registrate per essere gestite da ASP.NET mediante Aspnet_isapi.dll. Per impostazione predefinita, non viene fornita la protezione per le risorse non ASP.NET. 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.