Compartilhar via


Classe SessionStateSection

Configura o estado de sessão para um aplicativo Web.

Sintaxe

class SessionStateSection : ConfigurationSectionWithCollection  

Métodos

A tabela a seguir lista os métodos expostos pela classe SessionStateSection.

Nome Descrição
Add (Herdado de ConfigurationSectionWithCollection.)
Limpar (Herdado de ConfigurationSectionWithCollection.)
Get (Herdado de ConfigurationSectionWithCollection.)
GetAllowDefinition (Herdado de ConfigurationSection.)
GetAllowLocation (Herdado de ConfigurationSection.)
Remover (Herdado de ConfigurationSectionWithCollection.)
RevertToParent (Herdado de ConfigurationSection.)
SetAllowDefinition (Herdado de ConfigurationSection.)
SetAllowLocation (Herdado de ConfigurationSection.)

Propriedades

A tabela a seguir lista as propriedades expostas pela classe SessionStateSection.

Nome Descrição
AllowCustomSqlDatabase Um valor de boolean de leitura/gravação. true se o usuário tiver permissão para especificar o valor inicial do catálogo na propriedade SqlConnectionString; caso contrário, false. O padrão é false.
Cookieless Um valor de sint32 de leitura/gravação que configura como os cookies são usados para identificar sessões de cliente. Os valores possíveis estão listados posteriormente na seção Comentários. Observação: há duas maneiras de o estado da sessão armazenar a ID exclusiva que associa o cliente a uma sessão de servidor: armazenando um cookie HTTP no cliente ou codificando a ID da sessão na URL. Armazenar a ID da sessão no cookie é mais seguro, mas requer que o navegador do cliente tenha suporte para cookies. Para aplicativos que permitem clientes que não têm suporte para cookies, como uma variedade de dispositivos móveis, a ID da sessão pode ser armazenada na URL. A opção de URL tem várias desvantagens. Ela requer que os links no site sejam relativos e que a página seja redirecionada no início da sessão com novos valores de cadeia de caracteres de consulta. Também expõe a ID da sessão na cadeia de caracteres de consulta, na qual ela pode ser usada em um ataque de segurança. Você deve usar o modo sem cookie somente se precisar dar suporte a clientes que não têm suporte para cookies.
CookieName Um valor de string de leitura/gravação que especifica o nome do cookie HTTP a ser usado para identificação de sessão. O padrão é "ASP.NET_SessionId".
CustomProvider Um valor de string de leitura/gravação que especifica o nome de um provedor personalizado da propriedade Providers que é usada quando a propriedade Mode é definida como Custom.
Location (Herdado de ConfigurationSection.) Uma propriedade chave.
Mode Um valor de sint32 de leitura/gravação que especifica onde armazenar o estado da sessão. Os valores possíveis estão listados posteriormente na seção Comentários. Observação: a propriedade Mode não é necessária e pode ser herdada de um nível mais alto na hierarquia de configuração ou do valor padrão. No entanto, o manipulador de configuração sempre gravará o modo com base no valor herdado atual da seção.
PartitionResolverType Um valor de string de leitura/gravação que contém o nome totalmente qualificado do tipo resolvedor que particiona dados de estado de sessão em vários nós de back-end quando a propriedade Mode é definida como SQLServer ou StateServer. Observação: se essa propriedade for especificada, as propriedades SqlConnectionString e StateConnectionString serão ignoradas. A cadeia de conexão retornada por PartitionResolverType será usada em cada solicitação para se conectar ao local do servidor apropriado para o restante da solicitação. Se a cadeia de conexão não for válida, ASP.NET gerará a mesma exceção gerada quando a cadeia de conexão configurada para o servidor não for válida.
Path (Herdado de ConfigurationSection.) Uma propriedade chave.
Providers Um valor ProviderSettings que contém o nome e o tipo de provedores que executam serviços relacionados ao estado da sessão.
RegenerateExpiredSessionId Um valor de boolean de leitura/gravação. true se a ID da sessão for regenerada quando uma ID de sessão expirada for especificada pelo cliente; caso contrário, false. O padrão é false. Observação: por padrão, somente URLs sem cookie são relançadas quando essa propriedade está habilitada.
SectionInformation (Herdado de ConfigurationSection.)
SessionIDManagerType Um valor de string de leitura/gravação que especifica o tipo totalmente qualificado do gerenciador de IDs de sessão.
SqlCommandTimeout Um valor de datetime de leitura/gravação que especifica o tempo limite para comandos SQL que usam o modo de estado de sessão do SQL Server. O padrão é 30 segundos.
SqlConnectionString Um valor de string de leitura/gravação que contém a cadeia de conexão para um SQL Server. O padrão é "data source=localhost; Segurança Integrada=SSPI". Essa propriedade é necessária quando a propriedade Mode é definida como SQLServer.
StateConnectionString Um valor de string de leitura/gravação que especifica o nome do servidor e a porta quando o estado da sessão é armazenado remotamente. O padrão é "tcpip=loopback:42424". Essa propriedade é necessária quando a propriedade Mode é definida como StateServer. Observação: verifique se o serviço de estado ASP.NET está em execução no servidor remoto que armazena as informações de estado de sessão. Esse serviço é instalado com ASP.NET e está localizado por padrão em [drive:]\WINDOWS\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe. Por padrão, esse serviço é configurado para início manual. Você deve alterar o comportamento de início para Automático.
StateNetworkTimeout Um valor de datetime de leitura/gravação que especifica o tempo, em segundos, em que a conexão de rede entre o servidor Web e o servidor de estado pode permanecer ociosa antes que a sessão seja abandonada. Essa propriedade é necessária quando a propriedade Mode é definida como StateServer. O padrão é 10 segundos.
Timeout Um valor de datetime de leitura/gravação que especifica o tempo, em minutos, após o qual a sessão expirará devido à inatividade. O padrão é de 20 minutos. Observação: não é possível definir a propriedade Timeout como um valor maior que 525.601 minutos (1 ano).
UseHostingIdentity Um valor de boolean de leitura/gravação. true se a autenticação do Windows e a identidade do processo do host (ASP.NET ou uma identidade do Serviço Windows) estiverem habilitadas para conexões remotas; false se o estado da sessão usar a representação do cliente quando estiver disponível. O padrão é true. Observação: essa configuração simplifica o gerenciamento da autenticação integrada do Windows concedendo acesso ao banco de dados somente ao processo de trabalho ASP.NET ou à identidade do aplicativo e não a todo o domínio ou a um conjunto de usuários de domínio.

Subclasses

Essa classe não contém subclasses.

Comentários

Quando um novo cliente começa a interagir com um aplicativo Web, uma ID de sessão é emitida e associada a todas as solicitações subsequentes do mesmo cliente durante o tempo em que a sessão é válida. Essa ID é usada para manter o estado do lado do servidor associado à sessão do cliente entre solicitações. A classe SessionStateSection controla como o aplicativo ASP.NET estabelece e mantém essa associação em nome de cada cliente.

A tabela a seguir lista os possíveis valores da propriedade Cookieless. O padrão é 1 (UseCookies).

Valor Palavra-chave Descrição
0 UseUri A ID da sessão é inserida como uma cadeia de caracteres de consulta na solicitação URI (Uniform Resource Identifier) e o URI é redirecionado para a URL solicitada originalmente. A solicitação de URI alterada é usada durante a sessão, portanto, nenhum cookie é necessário. Observação: ao usar o modo de UseUri, defina a propriedade RegenerateExpiredSessionId como true. Isso permite que um servidor Web expire e regenere tokens, o que dá a um invasor potencial menos tempo para capturar um cookie e obter acesso ao conteúdo do servidor Web. Você também deve considerar alterar a propriedade Timeout para menor que o padrão de 20 minutos.
1 UseCookies A ID da sessão é armazenada em um cookie HTTP no cliente durante a conexão de um usuário com um site. Os cookies são passados nos cabeçalhos HTTP de todas as solicitações entre um cliente e um servidor Web e são mais eficientes no estado de sessão de acompanhamento, porque não exigem redirecionamento. Além disso, eles mantêm o estado se um usuário sair de um site para visitar outro e, em seguida, retornar ao site original. Observação: considere alterar a propriedade Timeout para menor que o padrão de 20 minutos para que um invasor em potencial tenha menos tempo para capturar um cookie e obter acesso ao conteúdo do site.
2 AutoDetect A ID da sessão é armazenada em um cookie HTTP no cliente somente após um handshake com o navegador verificar se um cookie pode ser armazenado. Observação: ao usar o modo de AutoDetect, defina a propriedade RegenerateExpiredSessionId como true. Isso permite que um servidor Web expire e regenere tokens, o que dá a um invasor potencial menos tempo para capturar um cookie e obter acesso ao conteúdo do servidor Web. Você também deve considerar alterar a propriedade Timeout para menor que o padrão de 20 minutos.
3 UseDeviceProfile A ID da sessão será armazenada em um cookie HTTP no cliente se o perfil do dispositivo cliente tiver suporte para cookies; caso contrário, nenhum cookies será usado. Se o perfil do dispositivo tiver suporte para cookies, eles serão usados mesmo se o usuário tiver desabilitado o suporte a cookies. Use essa configuração para garantir que as IDs sem cookie sejam usadas somente com clientes que exigem isso (por exemplo, navegadores móveis). Observação: ao usar o modo de UseDeviceProfile, defina a propriedade RegenerateExpiredSessionId como true. Isso permite que um servidor Web expire e regenere tokens, o que dá a um invasor potencial menos tempo para capturar um cookie e obter acesso ao conteúdo do servidor Web. Você também deve considerar alterar a propriedade Timeout para menor que o padrão de 20 minutos.

A tabela a seguir lista os possíveis valores da propriedade Mode. O padrão é 1 (InProc).

Valor Palavra-chave Descrição
0 Off O estado de sessão está desabilitado.
1 InProc O estado da sessão é armazenado para um aplicativo ASP.NET no processo de trabalho em que o aplicativo é executado.

O estado da sessão em processo é o modo de armazenamento de estado interno mais rápido. No entanto, à medida que armazena mais dados em uma sessão, você consome mais memória do servidor Web, o que pode diminuir o desempenho.

Os dados de estado de sessão em processo serão perdidos se o processo de trabalho for reciclado. Se seus aplicativos ASP.NET precisarem preservar dados de estado de sessão, e a velocidade do acesso a dados não for uma preocupação primária, considere usar um modo de estado de sessão fora do processo para armazenar os dados.

O estado da sessão em processo não pode ser usado em um Web farm sem um esquema de afinidade de ID de sessão que garanta que todas as solicitações com uma determinada ID de sessão sejam direcionadas para o mesmo servidor Web. Observação: o serviço de estado ASP.NET (Aspnet_state.exe) deve estar em execução para que o estado da sessão em processo funcione. Esse serviço é instalado com ASP.NET e está localizado por padrão em [drive:]\WINDOWS\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe. Por padrão, esse serviço é configurado para início manual. Você deve alterar o comportamento de início para Automático.
2 StateServer O estado de sessão usa o serviço de estado ASP.NET fora do processo para armazenar informações de estado. A vantagem dessa configuração é que o estado da sessão é preservado quando o processo de trabalho do aplicativo é reciclado. Se você usar essa configuração, deverá especificar uma cadeia de conexão na propriedade StateConnectionString.
3 SQLServer O estado de sessão usa um banco de dados do SQL Server fora de processo para armazenar informações de estado. A vantagem dessa configuração é que o estado de sessão será preservado quando o processo de trabalho do aplicativo for reciclado ou se o serviço de estado do ASP.NET ou o servidor Web ficar inoperante. Se você usar essa configuração, deverá especificar uma cadeia de conexão na propriedade SqlConnectionString. Observação: para usar o modo de estado de sessão SQLServer, você deve executar o script SQL InstallSqlState.sql (que está instalado em [unidade:]\WINDOWS\Microsoft.NET\Framework\VersionNumber como parte da instalação padrão do .NET Framework) no computador que executa o SQL Server que armazenará o estado da sessão. Isso cria um banco de dados chamado ASPState com novos procedimentos armazenados e cria tabelas ASPStateTempApplications e ASPStateTempSessions no banco de dados TempDB.
4 Custom O estado da sessão usa um armazenamento de dados personalizado para armazenar informações de estado de sessão. Se você usar essa configuração, deverá especificar o nome do provedor personalizado na propriedade CustomProvider.

Hierarquia de herança

ConfigurationSection

ConfigurationSectionWithCollection

SessionStateSection

Requisitos

Tipo Descrição
Cliente – IIS 7.0 no Windows Vista
– IIS 7.5 no Windows 7
– IIS 8.0 no Windows 8
– IIS 10.0 no Windows 10
Servidor – IIS 7.0 no Windows Server 2008
– IIS 7.5 no Windows Server 2008 R2
– IIS 8.0 no Windows Server 2012
– IIS 8.5 no Windows Server 2012 R2
– IIS 10.0 no Windows Server 2016
Product – IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0
Arquivo MOF WebAdministration.mof

Confira também

System.Web.Configuration.SystemWebSectionGroup.SessionState
System.Web.SessionState.SessionStateModeConfigurationSectionWithCollection Class
Classe ProviderSettings
Gerenciamento de estado de sessão rápido, escalonável e seguro para seus aplicativos Web