Condividi tramite


ASP.NET 2.0/3.5 Configurazione dell'hosting condiviso

di Walter Oliver

Introduzione

IIS offre miglioramenti per il contenuto dinamico, in particolare ASP.NET. In IIS 7 e versioni successive il modello di estendibilità del runtime di ASP.NET è integrato nel server principale. Ciò consente agli sviluppatori di estendere completamente IIS con le funzionalità avanzate di ASP.NET 2.0 o versione successiva e .NET Framework, invece di usare API C++ di livello inferiore. Le applicazioni ASP.NET esistenti trarranno vantaggio dall'integrazione più vicina grazie alla possibilità di usare funzionalità esistenti, ad esempio l'autenticazione basata su moduli, i ruoli e la memorizzazione nella cache di output per tutti i tipi di contenuto, non solo per le pagine aspx.

Per altre informazioni su alcune delle principali funzionalità e vantaggi dell'integrazione di ASP.NET con IIS, vedere Panoramica di Core Web Server. Per informazioni su e su come installare .NET Framework 3.5, vedere https://www.microsoft.com/net/ o il ASP.NET sito della community.

Le impostazioni seguenti sono state usate nel server Web come parte dell'architettura di hosting condivisa menzionata nell'articolo "Pianificazione dell'architettura di hosting condiviso" in Linee guida per l'hosting. Per altre informazioni sul motivo per cui queste impostazioni sono consigliate e per altri dettagli su come configurarle, scaricare la Guida alla distribuzione guida alla distribuzione dell'hosting ASP.NET 4.

Configurazione dei livelli di attendibilità

I livelli di attendibilità consentono di definire le regole di sicurezza per ASP.NET. Definiscono i tipi di operazioni che un'applicazione può eseguire, ad esempio la lettura dal disco o l'accesso al Registro di sistema. Il livello di attendibilità consigliato è Medium, che consente molte operazioni comuni, ma limita molte delle applicazioni pericolose. Se è necessario consentire più operazioni rispetto a media attendibilità consentita, è necessario creare un livello di attendibilità personalizzato.

Per configurare un livello di attendibilità personalizzato e configurare autorizzazioni aggiuntive

  1. Passare alla directory %windir%\Microsoft.NET\Framework \{version}\ CONFIG.

  2. Copiare il file dei criteri di attendibilità medio, web_mediumtrust.config, per creare un nuovo file di criteri nella stessa directory %windir%\Microsoft.NET\Framework\{version}\ CONFIG\.

  3. Rinominare il file per indicare che si tratta di un livello di attendibilità personalizzato, ad esempio web_CustomTrust.config.

  4. Aprire il nuovo file, web_CustomTrust.config e individuare la sezione WebPermission .

    ...

    <IPermission class="WebPermission"
    
    version="1"
                   <ConnectAccess>
                       <URI uri="$OriginHost$" />
                   </ConnectAccess>
         </IPermission>
    

    ...

  5. Modificare WebPermission in modo che l'elemento ConnectAccess venga rimosso e Unrestricted sia impostato su true.

    ...

    <IPermission class="WebPermission"
    
    version="1" 
                      Unrestricted="true"/>
    

    ...

  6. Impostare come commento PrintingPermission e EnvironmentPermission, a meno che non sia noto che sono necessari per l'ambiente di hosting condiviso.

  7. Aggiungere il nuovo <trustLevel> elemento alla <securityPolicy> sezione del file Web.config, come illustrato di seguito:

    <location allowOverride="true">
    
        <system.web>
          <securityPolicy>
           <trustLevel name="Full" policyFile="internal" />
           <trustLevel name="High" policyFile="web_hightrust.config" />
           <trustLevel name="Medium" policyFile="web_mediumtrust.config" />
           <trustLevel name="Low" policyFile="web_lowtrust.config" />
           <trustLevel name="Minimal" 
                       policyFile="web_minimaltrust.config" />
           <trustLevel name="Custom" policyFile="web_CustomTrust.config" />
          </securityPolicy>
          <trust level="Custom" originUrl="" />
         </system.web>
    </location>
    
  8. Bloccare il livello di attendibilità in modo che non possa essere modificato dalle applicazioni nel server impostando l'elemento location allowOverride su false.

    <location allowOverride="false">
        <system.web>
          <securityPolicy>
           <trustLevel name="Full" policyFile="internal" />
           <trustLevel name="High" policyFile="web_hightrust.config" />
           <trustLevel name="Medium" policyFile="web_mediumtrust.config" />
           <trustLevel name="Low" policyFile="web_lowtrust.config" />
           <trustLevel name="Minimal" 
                       policyFile="web_minimaltrust.config" />
           <trustLevel name="Custom" policyFile="web_CustomTrust.config" />
          </securityPolicy>
          <trust level="Custom" originUrl="" />
         </system.web>
    </location>
    

Configurazione del contenuto da gestire da un file server remoto

Quando si configura ASP.NET per usare il contenuto archiviato in un file server remoto, sono necessari alcuni passaggi aggiuntivi.

Quando IIS riceve il contenuto da un file server remoto, rappresenta l'utente autenticato. Si tratta dell'utente impostato in modo specifico come utente della directory virtuale oppure, se non ne è specificato uno, l'utente anonimo. Il materiale sussidiario iis indica che l'utente del pool di applicazioni deve essere usato come utente anonimo, quindi in questo caso l'identità rappresentata è l'identità del pool di applicazioni. L'uso di un'identità per tutti gli accessi (anonimo, pool di applicazioni e directory virtuale) semplifica notevolmente una distribuzione.

Per eseguire alcune applicazioni ASP.NET da un file server remoto, l'utente rappresentato deve avere accesso alla directory temporanea di Windows e alle directory di compilazione temporanea.

Per gestire ASP.NET contenuto da una condivisione file server

  1. Concedere l'autorizzazione per tutte le identità del pool di applicazioni alla %windir%\Temp directory modificando gli ACL per la cartella.

  2. Aggiungere criteri di sicurezza dall'accesso al codice per consentire ASP.NET accesso appropriato alla condivisione file server. A tale scopo, aprire un prompt dei comandi ed eseguire il comando seguente:

    %windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1.  -url "file://\\remotefileserver\content$\*" FullTrust
    

Configurazione delle impostazioni di Garbage Collector

.NET Framework usa l'operazione di Garbage Collection automatica per gestire la memoria per tutte le applicazioni. Quando il Garbage Collector (GC) decide che un'operazione di garbage sufficiente è stata accumulata ed è efficiente a tale scopo, esegue una raccolta per liberare memoria. Questo processo è completamente automatico, ma esistono impostazioni che possono rendere il processo più efficiente.

Per altre informazioni su GC, vedere "Capitolo 5 - Miglioramento delle prestazioni del codice gestito" e vedere la sezione .

Abilitazione di Workstation Garbage Collector

Per impostazione predefinita, il server GC viene usato da .NET Framework per ottimizzare la velocità e il carico della CPU. Per l'hosting condiviso, in cui la memoria è più spesso il vincolo per un numero di siti attivi, è consigliabile usare workstation GC. GC workstation ottimizza la memoria.

Per altre informazioni su questa impostazione, vedere l'articolo della Knowledge Base "È possibile che venga visualizzato un messaggio di errore o che il computer smette di rispondere, quando si ospitano applicazioni Web che usano ASP.NET in un computer che esegue Windows Server 2003" (https://support.microsoft.com/kb/911716).

Disabilitazione del Garbage Collector simultaneo

Sono disponibili 3 versioni di GC: Server, Workstation con abilitazione simultanea e Workstation con disabilitato simultaneamente. Il GC workstation simultaneo è destinato agli scenari client. Proprio come il server GC assegna priorità alla velocità effettiva e alla scalabilità a un costo di memoria, la workstation GC simultanea assegna priorità alla velocità di risposta a un costo di memoria. Per ottimizzare la memoria, disabilitare l'operazione di Garbage Collection simultanea quando si usa workstation GC.

Abilitazione dell'impostazione gcTrimCommitOnLowMemory

Poiché il GC mantiene la memoria per le allocazioni future, lo spazio di cui è stato eseguito il commit può essere superiore a quello strettamente necessario. Questo spazio può essere ridotto per gestire situazioni in cui si verifica un carico elevato sulla memoria di sistema. Quando questa impostazione è abilitata, GC valuta il carico di memoria di sistema e passa a una modalità di taglio quando il carico raggiunge il 90%. La modalità trimming viene mantenuta fino a quando il carico non scende sotto l'85%. Quando le condizioni sono consentite, il GC può decidere che l'impostazione non aiuterà l'applicazione e la ignorerà.

Per configurare le impostazioni GC

  1. Passare alla directory %windir%\Microsoft.NET\Framework\{version}.

  2. Aprire il file aspnet.config e individuare l'elemento <gcServer> . Se l'elemento non esiste, creare una voce usando il passaggio 3.

    ...

    <configuration> 
    <runtime> 
    <gcServer enabled="true"/> 
    </runtime> 
    </configuration>
    ...
    
  3. Aggiungere i tre elementi seguenti all'interno della <runtime> sezione :

    ...

    <configuration> 
    <runtime> 
    <gcServer enabled="false" />
    
    <gcConcurrent enabled="false" />
    <gcTrimCommitOnLowMemory enabled="true" />
    </runtime> 
    </configuration>
    ...
    
  4. Salvare il file e chiuderlo.