Share via


Elemento sessionState (schema delle impostazioni ASP.NET)

Aggiornamento: novembre 2007

Consente di configurare le impostazioni di stato sessione per l'applicazione corrente.

Elemento configuration (schema delle impostazioni generali)
  Elemento system.web (schema delle impostazioni ASP.NET)
    Elemento sessionState (schema delle impostazioni ASP.NET)

<sessionState 
    mode="[Off|InProc|StateServer|SQLServer|Custom]"
    timeout="number of minutes"
    cookieName="session identifier cookie name"
    cookieless=
         "[true|false|AutoDetect|UseCookies|UseUri|UseDeviceProfile]"
    regenerateExpiredSessionId="[True|False]"
    sqlConnectionString="sql connection string"
    sqlCommandTimeout="number of seconds"
    allowCustomSqlDatabase="[True|False]"
    useHostingIdentity="[True|False]"
    stateConnectionString="tcpip=server:port"
    stateNetworkTimeout="number of seconds"
    customProvider="custom provider name">
    <providers>...</providers>
</sessionState>

Attributi ed elementi

Le seguenti sezioni illustrano attributi, elementi figlio e padre.

Attributi

Attributo

Descrizione

allowCustomSqlDatabase

Attributo Boolean facoltativo.

Specifica se il database SQL dello stato sessione può essere un database personalizzato invece del database predefinito ASP.NET. Se l'impostazione dell'attributo è false, non è possibile specificare un catalogo iniziale né un database come valore dell'attributo sqlConnectionString. Il database SQL dello stato sessione predefinito è il database ASPState. Per ulteriori informazioni, vedere Modalità stato sessione.

Questo attributo è nuovo in .NET Framework versione 2.0.

Il valore predefinito è false.

cookieless

Attributo HttpCookieMode facoltativo.

Specifica come vengono utilizzati i cookie per un'applicazione Web.

L'attributo cookieless può essere uno dei valori riportati di seguito. Il valore predefinito è UseCookies.

Nota

Quando si configura un sito Web ASP.NET con supporto AJAX, utilizzare solo il valore predefinito di UseCookies per l'attributo cookieless. Le impostazioni che utilizzano cookie codificati nell'URL non sono supportate dalle librerie di script client ASP.NET AJAX.

Valore

Descrizione

AutoDetect

ASP.NET determina se il browser o il dispositivo richiedente supporta i cookie. Se il browser o il dispositivo richiedente li supporta, AutoDetect utilizza i cookie per rendere permanenti i dati utente. In caso contrario, viene utilizzato un identificatore nella stringa di query. Se supportati dal browser o dal dispositivo, ma attualmente disattivati, i cookie vengono ugualmente utilizzati dalla funzionalità richiedente.

UseCookies

I cookie rendono permanenti i dati utente indipendentemente dal fatto che siano supportati dal browser o dal dispositivo.

UseDeviceProfile

ASP.NET determina se utilizzare i cookie in base all'impostazione di HttpBrowserCapabilities. Se l'impostazione indica che il browser o il dispositivo li supporta, i cookie vengono utilizzati. In caso contrario, viene utilizzato un identificatore nella stringa di query.

UseUri

La funzionalità chiamante utilizza la stringa di query per memorizzare un identificatore indipendentemente dal fatto che il browser o il dispositivo supporti i cookie.

cookieName

Attributo String facoltativo.

Specifica il nome del cookie in cui viene memorizzato l'identificatore di sessione.

Questo attributo è nuovo in .NET Framework versione 2.0.

Il valore predefinito è "ASP.NET_SessionId".

customProvider

Attributo String facoltativo.

Specifica il nome di un provider di stato sessione da utilizzare per memorizzare e recuperare i dati dello stato sessione. Il provider viene specificato nell'elemento providers. Il provider viene utilizzato solo quando la modalità dello stato sessione è impostata sul valore Custom. Per ulteriori informazioni, vedere Modalità stato sessione.

Questo attributo è nuovo in .NET Framework versione 2.0.

Il valore predefinito è una stringa vuota ("").

mode

Attributo SessionStateMode facoltativo.

Specifica dove archiviare i valori dello stato sessione. Per ulteriori informazioni, vedere Modalità stato sessione.

L'attributo mode può essere uno dei valori riportati di seguito. Il valore predefinito è InProc.

Valore

Descrizione

Custom

Lo stato sessione utilizza un archivio dati personalizzato per memorizzare le informazioni sullo stato sessione.

InProc

Lo stato sessione è in-process con un processo di lavoro ASP.NET.

Off

Lo stato sessione è disattivato.

SQLServer

Lo stato sessione utilizza un database SQL Server out-of-process per memorizzare le informazioni sullo stato.

StateServer

Lo stato sessione utilizza il servizio Stato di ASP.NET out-of-process per memorizzare le informazioni sullo stato.

partitionResolverType

Attributo String facoltativo.

Specifica dove archiviare lo stato sessione. Se viene specificato un valore nell'attributo partitionResolverType, gli attributi sqlConnectionString e stateConnectionString vengono ignorati. La stringa di connessione restituita dalla proprietà PartitionResolverType viene utilizzata in ogni richiesta di connessione al percorso del server appropriato per il promemoria della richiesta. Se la stringa di connessione non è valida, in ASP.NET viene generata la stessa eccezione generata quando la stringa di connessione al server configurata non è valida. Questa proprietà viene utilizzata per partizionare i dati dello stato sessione tra più nodi backend, se in modalità SQL o server di stato.

Questo attributo è nuovo in .NET Framework versione 2.0.

Il valore predefinito è una stringa vuota.

regenerateExpiredSessionId

Attributo Boolean facoltativo.

Specifica se l'ID di sessione verrà emesso nuovamente, quando dal client verrà specificato un ID di sessione scaduto. Per impostazione predefinita, gli ID sessione vengono emessi nuovamente solo per la modalità cookieless se è attivato regenerateExpiredSessionId. Per ulteriori informazioni, vedere IsCookieless.

Questo attributo è nuovo in .NET Framework versione 2.0.

Il valore predefinito è true.

sqlCommandTimeout

Attributo TimeSpan facoltativo.

Specifica il timeout di durata, espresso in secondi, per i comandi SQL che utilizzano la modalità stato sessione SQL Server. Per timeout di durata si intende il numero di secondi di inattività consentito a un comando SQL prima che venga annullato.

Questo attributo è nuovo in .NET Framework versione 2.0.

Il valore predefinito è 0:00:30 (30 secondi).

sqlConnectionString

Attributo String facoltativo.

Specifica la stringa di connessione per un computer su cui è in esecuzione SQL Server. Questo attributo è obbligatorio quando l'attributo mode è impostato sul valore SQLServer. Per ulteriori informazioni, vedere Modalità stato sessione.

È possibile impostare questo attributo su una sqlConnectionString denominata dal nodo connectionStrings o utilizzare la sintassi seguente:

sqlConnectionString="Data Source=.\SQLServer2005;Initial Catalog=SessionState;Integrated Security=SSPI;"

Nota

Per migliorare la sicurezza di un'applicazione quando è attiva la modalità SQLServer, utilizzare la configurazione protetta per proteggere il valore sqlConnectionString mediante la crittografia della sezione di configurazione sessionState.

L'impostazione predefinita è "data source=127.0.0.1;Integrated Security=SSPI".

stateConnectionString

Attributo String facoltativo.

Specifica l'indirizzo o il nome e la porta del server in cui lo stato sessione è memorizzato in remoto. Il valore della porta deve essere 42424. Questo attributo è obbligatorio quando mode corrisponde al valore StateServer. Assicurarsi che il servizio Stato ASP.NET sia in esecuzione sul server remoto in cui vengono memorizzate le informazioni relative allo stato sessione. Questo servizio viene installato con ASP.NET e, per impostazione predefinita, si trova in %windir%\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe. Per ulteriori informazioni, vedere Modalità stato sessione.

Nota

Per migliorare la sicurezza di un'applicazione quando è attiva la modalità StateServer, utilizzare la configurazione protetta per proteggere il valore stateConnectionString mediante la crittografia della sezione della configurazione <sessionState>.

Il valore predefinito è "tcpip=127.0.0.1:42424".

stateNetworkTimeout

Attributo TimeSpan facoltativo.

Specifica il numero di secondi in cui la connessione di rete TCP/IP tra il server Web e il server di stato può essere inattiva prima che la richiesta venga annullata. Questo attributo viene utilizzato quando l'attributo mode è impostato sul valore StateServer.

Il valore predefinito è 10 secondi.

timeout

Attributo TimeSpan facoltativo.

Specifica il numero di minuti durante i quali una sessione può essere inattiva prima di essere abbandonata. L'attributo timeout non può essere impostato su un valore maggiore di 525.600 minuti (1 anno) per le modalità in-process e server di stato.

L'impostazione di configurazione timeout della sessione viene applicata solo alle pagine ASP.NET. La modifica del valore di timeout della sessione non ha effetto sul timeout della sessione per le pagine ASP. Analogamente, la modifica del timeout di sessione per le pagine ASP non ha effetto sul timeout di sessione per le pagine ASP.NET.

Il valore predefinito è 20 minuti.

useHostingIdentity

Attributo Boolean facoltativo.

Specifica se lo stato sessione ripristinerà l'identità host o utilizzerà la rappresentazione client.

Se il valore dell'attributo è true, in ASP.NET viene stabilita una connessione all'archivio dello stato sessione con una delle credenziali di processo seguenti:

  • Il processo di hosting, che corrisponde ad ASPNET per Microsoft Internet Information Services (IIS) versioni 5 e 5.1 o a SERVIZIO DI RETE per Microsoft Windows Server 2003.

  • L'identità di rappresentazione dell'applicazione, che corrisponde al momento in cui viene utilizzata la configurazione seguente:

    <identity impersonate="true" userName="dominio\nomeutente" password="password sicura" />

Se il valore è false, in ASP.NET viene stabilita una connessione all'archivio dello stato sessione con le credenziali attualmente associate al thread del sistema operativo per la richiesta corrente. Per la rappresentazione client, la connessione all'archivio dello stato sessione viene stabilita con le credenziali di sicurezza negoziate con il browser. Se il valore è false, quando viene stabilita la connessione all'archivio dello stato sessione, ASP.NET non torna all'identità del processo o all'identità di rappresentazione dell'applicazione. Per ulteriori informazioni, vedere Rappresentazione ASP.NET.

Questo attributo è nuovo in .NET Framework versione 2.0.

Il valore predefinito è true.

Nota

In .NET Framework versione 1.1, se l'attributo mode è stato impostato su SQLServer ed è attivata la rappresentazione client, in ASP.NET viene eseguita la connessione al computer su cui è in esecuzione SQL Server mediante le credenziali della rappresentazione client ASP.NET.

Attributi ereditati

Attributi facoltativi.

Attributi ereditati da tutti gli elementi della sezione.

Elementi figlio

Elemento

Descrizione

providers

Contiene un insieme di provider personalizzati per l'archivio dello stato sessione.

Elementi padre

Elemento

Descrizione

configuration

È l'elemento di primo livello necessario in ciascun file di configurazione utilizzato in Common Language Runtime e nelle applicazioni basate su .NET Framework.

system.web

Specifica l'elemento di primo livello per le impostazioni di configurazione ASP.NET in un file di configurazione e contiene gli elementi per la configurazione di applicazioni Web ASP.NET e il controllo del comportamento delle stesse.

Note

L'elemento <sessionState> configura le impostazioni di stato sessione per l'applicazione corrente.

Quando un nuovo client inizia a interagire con un'applicazione Web, viene emesso un ID sessione che sarà associato a tutte le successive richieste da parte dello stesso client finché la sessione è valida. Questo ID viene utilizzato per mantenere lo stato lato server associato alla sessione client nel corso di più richieste. L'elemento <sessionState> controlla come questa associazione venga stabilita e mantenuta dall'applicazione ASP.NET per ogni client.

Questo meccanismo è molto flessibile e consente inoltre di ospitare le informazioni sullo stato sessione out-of-process e di tenere traccia dello stato senza utilizzare i cookie.

È possibile superare la dimensione massima dell'URI quando si inviano gli ID sessione nell'URI. Se la combinazione del ticket di identificazione anonima, del ticket di autenticazione basata su form, dell'ID di sessione e dei dati utente è maggiore della lunghezza massima consentita per l'URI, la richiesta avrà esito negativo determinando l'errore 400 - Richiesta non valida.

Per utilizzare la modalità StateServer

  1. Sul server remoto in cui verranno memorizzate le informazioni sullo stato sessione accertarsi che il servizio Stato ASP.NET sia in esecuzione.

    Questo servizio viene installato con ASP.NET e, per impostazione predefinita, si trova nel percorso %windir%\Microsoft.NET\Framework\version\aspnet_state.exe.

  2. Nel file Web.config dell'applicazione impostare l'attributo mode di "StateServer" e stateConnectionString su un valore come "tcpip=dataserver:42424".

Per utilizzare la modalità SQLServer

  1. Sul computer con SQL Server in cui verrà memorizzato lo stato sessione eseguire InstallSqlState.sql.

    Per impostazione predefinita, InstallSqlState.sql si trova nel percorso %windir%\Microsoft.NET\Framework\version.

    In questo modo vengono creati un database denominato ASPState con le nuove stored procedure e le tabelle ASPStateTempApplications e ASPStateTempSessions del database TempDB.

  2. Nel file Web.config dell'applicazione impostare l'attributo mode di "SQLServer" e sqlConnectionString su un valore come "data source=localhost;Integrated Security=SSPI;".

    Nota

    Per eseguire queste operazioni è possibile utilizzare Aspnet_regsql.

Per informazioni su come accedere ai valori di configurazione per l'elemento <sessionState> e modificarli nel codice dell'applicazione, vedere SessionStateSection e System.Web.SessionState.

Configurazione predefinita

L'elemento <sessionState> predefinito seguente non viene configurato in modo esplicito nel file Machine.config o nel file Web.config radice. Si tratta, tuttavia, della configurazione predefinita restituita dall'applicazione.

<sessionState 
   mode="InProc" 
   stateConnectionString="tcpip=127.0.0.1:42424" 
   stateNetworkTimeout="10" 
   sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" 
   sqlCommandTimeout="30" 
   customProvider="" 
   cookieless="UseCookies" 
   cookieName="ASP.NET_SessionId" 
   timeout="20" 
   allowCustomSqlDatabase="false" 
   regenerateExpiredSessionId="true" 
   partitionResolverType="" 
   useHostingIdentity="true">
   <providers>
      <clear />
   </providers>
</sessionState>

Esempio

Nell'esempio riportato di seguito viene illustrato come specificare diverse impostazioni di configurazione dello stato sessione.

<sessionState
   mode="SQLServer"
   cookieless="true"
   sqlConnectionString=" Integrated Security=SSPI;data source=MySqlServer;"
   sqlCommandTimeout="10" />

Informazioni sull'elemento

Gestore della sezione di configurazione

SessionStateSection

Membro di configurazione

System.Web.SessionState

Percorsi configurabili

Machine.config

Web.config a livello di radice

Web.config a livello di applicazione

Requisiti

Microsoft Internet Information Services versione 5.0, 5.1 o 6.0

.NET Framework versione 1.0, 1.1 o 2.0

Microsoft Visual Studio 2003 o Visual Studio 2005

Vedere anche

Attività

Procedura: configurare directory specifiche utilizzando le impostazioni posizione

Procedura: bloccare le impostazioni di configurazione di ASP.NET

Concetti

Rappresentazione ASP.NET

Modalità stato sessione

Protezione dello stato sessione

Gerarchia ed ereditarietà dei file di configurazione di ASP.NET

Protezione della configurazione di ASP.NET

Scenari di configurazione ASP.NET

Riferimenti

Elemento system.web (schema delle impostazioni ASP.NET)

Elemento providers per sessionState (schema delle impostazioni ASP.NET)

Elemento configuration (schema delle impostazioni generali)

System.Configuration

System.Web.Configuration

SessionStateSection

System.Web.SessionState

Altre risorse

Crittografia delle informazioni di configurazione utilizzando la configurazione protetta

Impostazioni di configurazione generali (ASP.NET)

Impostazioni di configurazione di ASP.NET

Amministrazione di siti Web ASP.NET

API di configurazione di ASP.NET