Elemento <processModel>

Consente di configurare le impostazioni del modello di processo di ASP.NET in un server Web Microsoft Internet Information Services (IIS). È possibile impostare la sezione <processModel> solo all'interno del file Machine.config. L'impostazione viene applicata a tutte le applicazioni ASP.NET in esecuzione sul server.

**Attenzione   **Leggere la sezione Osservazioni relativa a questo elemento.

<configuration>
   <system.web>
      <processModel>

<processModelenable="true|false"              timeout="hrs:mins:secs|Infinite"               idleTimeout="hrs:mins:secs|Infinite"              shutdownTimeout="hrs:mins:secs|Infinite"              requestLimit="hrs:mins:secs|Infinite"              requestQueueLimit="num|Infinite"              restartQueueLimit="num|Infinite"              memoryLimit="percent"              cpuMask="num"              webGarden="true|false"              userName="username"              password="password"              logLevel="All|None|Errors"              clientConnectedCheck="hrs:mins:secs|Infinite"              responseDeadlockInterval="hrs:mins:secs|Infinite"              responseRestartDeadlockInterval="hrs:mins:secs|Infinite"              comAuthenticationLevel="Default|None|Connect|Call|                                       Pkt|PktIntegrity|PktPrivacy"              comImpersonationLevel="Default|Anonymous|Identify|                                     Impersonate|Delegate"              maxWorkerThreads="num"              maxIoThreads="num"/>

Attributi facoltativi

Attributo Opzione Descrizione
clientConnectedCheck     Specifica quanto tempo una richiesta resta in coda prima che in ASP.NET venga eseguito un controllo di connessione client.
comAuthenticationLevel     Specifica il livello di autenticazione per la protezione DCOM. Il valore predefinito è Connect.
    Default Specifica che DCOM determina il livello di autenticazione utilizzando il normale algoritmo di negoziazione protezione.
    None Non specifica alcuna autenticazione.
    Connect Specifica che DCOM autentica le credenziali del client solo quando il client stabilisce una relazione con il server.
    Call Specifica che DCOM autentica le credenziali del client quando il server riceve la richiesta all'inizio di ciascuna chiamata a procedura remota.
    Pkt Specifica che DCOM autentica che tutti i dati ricevuti provengono dal client previsto. I trasporti di datagrammi utilizzano sempre l'autenticazione Pkt.
    PktIntegrity Specifica che DCOM autentica e verifica che nessuno dei dati trasferiti tra il client e il server sia stato modificato.
    PktPrivacy Specifica che DCOM autentica tutti i livelli precedenti e crittografa il valore dell'argomento di ciascuna chiamata a procedura remota.
comImpersonationLevel     Specifica il livello di autenticazione per la protezione COM.
    Default Specifica che DCOM determina il livello di rappresentazione utilizzando il normale algoritmo di negoziazione protezione.
    Anonymous Specifica che il client è anonimo per il server. Il server può rappresentare il client, ma il token di rappresentazione non conterrà informazioni. Anonymous non è supportato nella versione 1.1.
    Identify Specifica che il server può ottenere l'identità del client. Il server può rappresentare il client per il controllo dell'elenco di controllo di accesso, ma non è in grado di accedere agli oggetti di sistema in qualità di client.
    Impersonate Specifica che il processo server può rappresentare il contesto di protezione del client quando agisce per conto del client. Questo livello di rappresentazione può essere utilizzato per accedere a risorse locali quali i file. Quando si utilizza questo livello di rappresentazione, il token di rappresentazione non può essere passato all'esterno di un computer.
    Delegate Specifica che il processo server può rappresentare il contesto di protezione del client quando agisce per conto del client. Il processo server può anche creare chiamate in uscita ad altri server, quando agisce per conto del client, utilizzando la funzione di mascheramento. Il server può utilizzare il contesto di protezione del client su altri computer per accedere a risorse locali e remote in qualità di client. Quando si utilizza questo livello di rappresentazione, il token di rappresentazione può essere passato tra diversi computer.
cpuMask     Specifica quali processori di un server multiprocessore sono adatti a eseguire processi ASP.NET. Il valore cpuMask specifica uno schema di bit che indica le CPU adatte a eseguire i thread ASP.NET. Il valore esadecimale 0x0d cpuMask rappresenta, ad esempio, il modello di bit 1101. In un computer con quattro CPU, questo indica che i processi di ASP.NET possono essere programmati sulle CPU 0, 2 e 3, ma non sulla CPU 1. ASP.NET avvia un solo processo di lavoro per ogni CPU disponibile. Se l'attributo webGarden (descritto di seguito) viene impostato su true, cpuMask limita il numero di processi di lavoro al numero di CPU disponibili. Il numero massimo di processi di lavoro consentiti è uguale al numero delle CPU. Per impostazione predefinita, tutte le CPU sono attivate e in ASP.NET viene avviato un processo per ciascuna di esse. Se l'attributo webGarden è impostato su false, l'attributo cpuMask viene ignorato e viene eseguito un solo processo di lavoro.
enable     Specifica se il modello di processo è attivato.
    true Indica che il modello di processo è attivato.
    false Indica che il modello di processo non è attivato.
idleTimeout     Specifica il periodo di inattività, in formato stringa hr:min:sec, trascorso il quale il processo di lavoro viene interrotto automaticamente. Il valore predefinito è Infinite.
logLevel     Specifica i tipi di evento da registrare nel log eventi.
    All Specifica che tutti gli eventi di processo vengono registrati.
    None Specifica che nessun evento viene registrato.
    Errors Specifica che vengono registrate solo le chiusure impreviste, le chiusure dovute a limiti di memoria e quelle dovute a blocchi critici. Errors è il valore predefinito.
maxWorkerThreads Da 5 a 100 Consente di configurare il numero massimo di thread di lavoro da utilizzare per il processo per ogni CPU. Se, ad esempio, questo valore è 25 in un server con processore singolo, vengono utilizzate le API in fase di esecuzione per impostare il limite del processo su 25. In un server a due processori, il limite sarà impostato su 50. Il valore predefinito è 20. Il valore di maxWorkerThreads deve essere maggiore o uguale all'impostazione dell'attributo minFreeThread nella sezione di configurazione <httpRuntime>.
maxIoThreads Da 5 a 100 Consente di configurare il numero massimo di thread di I/O da utilizzare per il processo per ogni CPU. Se, ad esempio, questo valore è 25 in un server con processore singolo, vengono utilizzate le API in fase di esecuzione per impostare il limite del processo su 25. In un server a due processori, il limite sarà impostato su 50. Il valore predefinito è 20. Il valore di maxIoThreads deve essere maggiore o uguale all'impostazione dell'attributo minFreeThread nella sezione di configurazione <httpRuntime>.
memoryLimit     Specifica la dimensione di memoria massima consentita, come percentuale della memoria totale del sistema, che può essere utilizzata per il processo di lavoro prima che in ASP.NET venga avviato un nuovo processo e vengano riassegnate le richieste esistenti. Il valore predefinito è 60%.
password     Se presente (e in combinazione con userName), questo attributo fa in modo che il processo di lavoro venga eseguito con l'identità Windows configurata. Il valore predefinito è AutoGenerate. Per ulteriori dettagli sui nomi speciali System e Machine, che non richiedono una password, e per informazioni sulla memorizzazione delle credenziali crittografate dei processi di lavoro nel Registro di sistema, vedere userName.
pingFrequency     Specifica l'intervallo di tempo, nel formato del modello di processo standard (hr:min:sec), in cui l'estensione ISAPI effettua il ping del processo di lavoro per verificare se sia in esecuzione. Se non è in esecuzione per l'intervallo pingTimeout, il processo di lavoro viene riavviato. Il valore predefinito è 30 secondi.
pingTimeout     Specifica l'intervallo di tempo, nel formato del modello di processo standard (hr:min:sec), trascorso il quale un processo di lavoro bloccato viene riavviato. Le estensioni ISAPI effettuano il ping del processo di lavoro nell'intervallo pingFrequency. Se il processo non risponde entro l'intervallo pingTimeout, viene riavviato. Il valore predefinito è 5 secondi.
requestLimit     Specifica il numero di richieste consentite prima che in ASP.NET venga automaticamente avviato un nuovo processo di lavoro che vada a sostituire quello corrente. Il valore predefinito è Infinite.
requestQueueLimit     Specifica il numero di richieste che possono essere contenute nella coda prima che in ASP.NET inizino a essere restituiti errori "503 – Server occupato" alle nuove richieste. Il valore predefinito è 5000.
responseDeadlockInterval     Specifica l'intervallo di tempo, nel formato del modello di processo standard (hr:min:sec), trascorso il quale il processo verrà riavviato, se si verificano le seguenti condizioni.
  • Esistono richieste in coda.
  • Non c'è stata alcuna risposta durante questo intervallo.

Il valore predefinito è 3 minuti.

responseRestartDeadlockInterval     Questo attributo non viene più utilizzato in ASP.NET e viene fornito esclusivamente per garantire la compatibilità con le versioni precedenti. Non genera errori di configurazione se è già presente in un file di configurazione. Tutte le operazioni di riciclaggio in caso di blocco critico sono ora controllate dall'attributo responseDeadlockInterval.
serverErrorMessageFile     Se presente, specifica il contenuto di un file da utilizzare al posto del messaggio predefinito "Server non disponibile", in caso di errore irreversibile. Il percorso del file è relativo a Machine.config o può essere assoluto. Se questo attributo non è presente, verrà utilizzato il messaggio predefinito "Server non disponibile".
shutdownTimeout     Specifica il numero di minuti consentito perché il processo di lavoro si arresti da solo. Alla scadenza del timeout, il processo di lavoro viene interrotto. Il tempo viene espresso nel formato stringa hr:min:sec. Il valore predefinito è 5 secondi o 0:00:05.
timeout     Specifica il numero di minuti di attesa prima dell'avvio di un nuovo processo di lavoro che vada a sostituire quello corrente. Il valore predefinito è Infinite.
userName     Se presente, l'attributo userName esegue il processo di lavoro di ASP.NET con un'identità di Windows diversa rispetto a quella predefinita. Per impostazione predefinita, userName viene impostato sul valore speciale Machine e il processo viene eseguito con un account utente denominato ASPNET creato automaticamente durante l'installazione di ASP.NET. La password per l'account ASPNET viene generata in modo crittografato durante l'installazione. Se negli attributi userName e password vengono presentate credenziali valide, il processo viene eseguito con l'account specificato. Un altro valore speciale per userName è System, con password AutoGenerate, che esegue il processo come account amministrativo e garantisce privilegi amministrativi a tutto il codice utente ASP.NET eseguito nel processo. Per informazioni sull'utilizzo di ASP.NET su un server che funge da controller di dominio, vedere la sezione Osservazioni.

userName e password sono memorizzati in testo non crittografato nel file di configurazione. Sebbene IIS non trasmetta file CONFIG in risposta a una richiesta di agente utente, è possibile leggere i file di configurazione in altro modo, ad esempio se si è un utente autenticato con le credenziali appropriate nel dominio che include il server. Per garantire un maggiore livello di protezione, la sezione processModel supporta la memorizzazione degli attributi userName e password crittografati nel Registro di sistema. Le credenziali devono essere in formato REG_BINARY e crittografate tramite le apposite funzioni della DPAPI (Data Protection API) di Windows 2000 e Windows XP. Per ulteriori informazioni, vedere le sezioni Osservazioni ed Esempio riportate di seguito.

webGarden     Quando viene utilizzato insieme all'attributo cpuMask, controlla l'affinità della CPU. Un server Web multiprocessore viene definito Web garden.
    true Indica che l'attributo cpuMask viene utilizzato per specificare quali sono le CPU adatte per eseguire processi ASP.NET.
    false Indica che l'utilizzo della CPU è pianificato dal sistema operativo Windows. L'attributo cpuMask viene ignorato e viene eseguito un solo processo di lavoro. Il valore predefinito è false.

Osservazioni

Il sistema di configurazione del codice gestito non legge le impostazioni di configurazione <processModel>. Tali istruzioni vengono, invece, lette direttamente dalla DLL non gestita aspnet_isapi.dll. Le modifiche apportate a questa sezione non vengono applicate fino a quando IIS non viene riavviato.

Se si installa ASP.NET in un controller di dominio, è necessario eseguire operazioni particolari affinché l'installazione funzioni in modo corretto. Per ulteriori informazioni, vedere l'articolo Q315158 "ASP.NET Does Not Work with the Default ASPNET Account on a Domain Controller" nella Microsoft Knowledge Base all'indirizzo http://support.microsoft.com (informazioni in lingua inglese).

Quando si esegue ASP.NET con IIS versione 6 in modalità nativa, viene utilizzato il modello di processo di IIS 6 e le impostazioni nella sezione <processModel> vengono ignorate. Per configurare l'identità, i cicli e altri valori del modello di processo, utilizzare l'interfaccia utente di Gestione servizi Internet per configurare il processo di lavoro di IIS per l'applicazione in uso.

I valori relativi all'ora sono in formato "ora:minuti:secondi". Se viene specificato un numero singolo senza due punti, si presume che si tratti di minuti. Pertanto il timeout="4" equivale al timeout="00:04:00".

Se un'applicazione ASP.NET provoca il riavvio del processo di lavoro di ASP.NET (aspnet_wp.exe in Windows 2000 e Windows XP Professional, w3wp.exe in Windows Server 2003) con un messaggio di errore che indica che il riavvio è stato eseguito per un sospetto stato di blocco critico, è necessario aumentare il valore impostato per responseDeadlockInterval.

Memorizzazione di un nome utente e di una password nel Registro di sistema

Per crittografare il nome utente e la password e memorizzarli nel Registro di sistema, impostare userName e password come indicato di seguito.

   userName="registry:HKLM\Software\AspNetProcess,Name"
   password="registry:HKLM\Software\AspNetProcess,Pwd"

La parte di stringa che segue la parola chiave registry e che precede la virgola indica il nome della chiave di registro aperta da ASP.NET. La parte di stringa che segue la virgola include un solo nome di valore di stringa da cui in ASP.NET verranno lette le credenziali. La virgola è obbligatoria e le credenziali devono essere memorizzate nell'hive HKLM. Se il formato di configurazione non è corretto, il processo di lavoro non verrà avviato e verrà seguito il percorso corrente del codice di errore per la creazione di account.

Le credenziali devono essere in formato REG_BINARY e contenere l'output di una chiamata alla funzione dell'API di Windows CryptProtectData. È possibile creare le credenziali crittografate e memorizzarle nel Registro di sistema con l'applicazione console di ASP.NET per l'impostazione del Registro di sistema (Aspnet_setreg.exe), che utilizza CryptProtectData per eseguire la crittografia. Per eseguire il download di Aspnet_setreg.exe, completo di codice sorgente Visual C++ e documentazione, visitare il sito Web www.asp.net e cercare "aspnet_setreg" (informazioni in lingua inglese).

È necessario configurare l'accesso alla chiave in cui sono memorizzate le credenziali crittografate in modo che sia disponibile solo per i gruppi Administrators e SYSTEM. Poiché la chiave verrà letta dal processo ASP.NET in esecuzione come SYSTEM, è necessario impostare le seguenti autorizzazioni:

Administrators:F

SYSTEM:F

CREATOR OWNER:F

ProcessAccount:R

In questo modo viene creata una doppia linea di difesa per la protezione dei dati:

  • Per accedere alle autorizzazioni ACL sarà necessario appartenere al gruppo Administrators.
  • Eventuali pirati informatici dovranno eseguire codice sul server (CryptUnprotectData) per recuperare le credenziali dell'account.

Esempi

Nell'esempio che segue vengono specificate diverse impostazioni di configurazione <processModel>.

<configuration>
   <system.web>
      <processModel
         enable="true"
         timeout="15" 
         idleTimeout="25"
         shutdownTimeout="5"
         requestLimit="1000"
         requestQueueLimit="500"
         responseDeadlockInterval="00:03:00"              
         responseRestartDeadlockInterval="Infinite"
         memoryLimit="20"
         webGarden="true"
         maxWorkerThreads="25"
         maxIoThreads="25"/>
   </system.web>
</configuration>

Nell'esempio che segue viene specificato che il nome utente e la password crittografati sono memorizzati nel Registro di sistema nella chiave AspNetProcess definita dall'utente.

<configuration>
   <system.web>
      <processModel>
         userName="registry:HKLM\Software\AspNetProcess,Name"
         password="registry:HKLM\Software\AspNetProcess,Pwd"
      </processModel>
   </system.web>
</configuration>

Requisiti

Contenuto in: <system.web>

Piattaforma Web: IIS 5.0, IIS 5.1, IIS 6.0

File di configurazione: Machine.config

Gestore della sezione di configurazione: System.Web.Configuration.ProcessModelConfigurationHandler

Vedere anche

Configurazione ASP.NET | Schema delle impostazioni ASP.NET