Partilhar via


SessionStateStoreProviderBase.GetItemExclusive Método

Definição

Retorna dados de estado de sessão somente leitura do armazenamento de dados da sessão.

public:
 abstract System::Web::SessionState::SessionStateStoreData ^ GetItemExclusive(System::Web::HttpContext ^ context, System::String ^ id, [Runtime::InteropServices::Out] bool % locked, [Runtime::InteropServices::Out] TimeSpan % lockAge, [Runtime::InteropServices::Out] System::Object ^ % lockId, [Runtime::InteropServices::Out] System::Web::SessionState::SessionStateActions % actions);
public abstract System.Web.SessionState.SessionStateStoreData GetItemExclusive (System.Web.HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out System.Web.SessionState.SessionStateActions actions);
abstract member GetItemExclusive : System.Web.HttpContext * string * bool * TimeSpan * obj * SessionStateActions -> System.Web.SessionState.SessionStateStoreData
Public MustOverride Function GetItemExclusive (context As HttpContext, id As String, ByRef locked As Boolean, ByRef lockAge As TimeSpan, ByRef lockId As Object, ByRef actions As SessionStateActions) As SessionStateStoreData

Parâmetros

context
HttpContext

O HttpContext da solicitação atual.

id
String

O SessionID da solicitação atual.

locked
Boolean

Quando esse método é retornado, contém um valor booliano definido como true se um bloqueio for obtido com êxito; caso contrário, false.

lockAge
TimeSpan

Quando esse método é retornado, contém um objeto TimeSpan que é definido como a quantidade de tempo que um item no armazenamento de dados de sessão foi bloqueado.

lockId
Object

Quando esse método é retornado, contém um objeto que é definido como o identificador de bloqueio da solicitação atual. Para obter detalhes sobre o identificador de bloqueio, consulte "Bloqueio de dados Session-Store" no resumo da classe SessionStateStoreProviderBase.

actions
SessionStateActions

Quando esse método é retornado, contém um dos valores SessionStateActions, indicando se a sessão atual é uma sessão sem cookie não inicializada.

Retornos

Um SessionStateStoreData preenchido com valores de sessão e informações do armazenamento de dados da sessão.

Exemplos

Para obter um exemplo de implementação de um provedor de repositório de estado de sessão, consulte Implementando um provedor de repositório de Session-State.

Comentários

O objeto SessionStateModule chama o método GetItemExclusive no início de uma solicitação, durante o evento AcquireRequestState, quando o atributo EnableSessionState é definido como true, que é o padrão. Se o atributo EnableSessionState estiver definido como ReadOnly, o objeto SessionStateModule chamará o método GetItem.

O método GetItemExclusive retorna um objeto SessionStateStoreData preenchido com informações de sessão do armazenamento de dados, atualiza a data de validade dos dados armazenados e bloqueia os dados de item de sessão no armazenamento de dados durante a solicitação. Se nenhum dado de item de sessão for encontrado no armazenamento de dados, o método GetItemExclusive definirá o parâmetro lockedout para false e retornará null. Isso faz com que o objeto SessionStateModule chame o método CreateNewStoreData para criar um novo item de sessão no armazenamento de dados. Se os dados do item de sessão forem encontrados no armazenamento de dados, mas os dados estiverem bloqueados, o método GetItemExclusive definirá o parâmetro lockedout como true, definirá o parâmetro lockAgeout para a data e hora atuais menos a data e a hora em que o item foi bloqueado (que é recuperado do armazenamento de dados), define o parâmetro lockIdout para o identificador de bloqueio recuperado do armazenamento de dados, e retorna null. Isso faz com que o objeto SessionStateModule chame o método GetItemExclusive novamente após um intervalo de meio segundo para tentar recuperar as informações do item de sessão e obter um bloqueio nos dados. Se o valor que o parâmetro lockAgeout estiver definido para exceder o valor ExecutionTimeout, o SessionStateModule chamará o método ReleaseItemExclusive para limpar o bloqueio nos dados do item de sessão e, em seguida, chamará o método GetItemExclusive novamente.

O parâmetro actionFlags é usado quando os atributos cookieless e regenerateExpiredSessionId são definidos como true. Um valor actionFlags definido como InitializeItem indica que a entrada no armazenamento de dados da sessão é uma nova sessão que requer inicialização. Entradas não inicializadas no armazenamento de dados de sessão são criadas por uma chamada para o método CreateUninitializedItem. Se o item do armazenamento de dados de sessão não for um item não inicializado, o parâmetro actionFlags será definido como zero.

Os implementadores personalizados do repositório de estado de sessão que dão suporte a sessões sem cookie devem definir o parâmetro actionFlagsout como o valor retornado do armazenamento de dados de sessão para o item atual. Se o valor do parâmetro actionFlags para o item de repositório de sessão solicitado for igual ao valor de enumeração InitializeItem, o método GetItemExclusive deverá definir o valor no armazenamento de dados como zero depois de definir o parâmetro actionFlagsout.

Aplica-se a

Confira também

  • Visão geral do estado da sessão ASP.NET