SessionStateUtility.GetHttpSessionStateFromContext(HttpContext) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Recupera los datos de sesión del contexto de la solicitud actual.
public:
static System::Web::SessionState::IHttpSessionState ^ GetHttpSessionStateFromContext(System::Web::HttpContext ^ context);
public static System.Web.SessionState.IHttpSessionState GetHttpSessionStateFromContext (System.Web.HttpContext context);
static member GetHttpSessionStateFromContext : System.Web.HttpContext -> System.Web.SessionState.IHttpSessionState
Public Shared Function GetHttpSessionStateFromContext (context As HttpContext) As IHttpSessionState
Parámetros
- context
- HttpContext
Objeto HttpContext a partir del cual se van a recuperar los datos.
Devoluciones
Instancia de implementación de la interfaz IHttpSessionState que se ha rellenado con los datos de sesión de la solicitud actual.
Ejemplos
En el ejemplo de código siguiente se muestra el controlador del ReleaseRequestState evento en un módulo de estado de sesión personalizado. El módulo recupera los datos de sesión de para HttpContext la solicitud actual mediante el GetHttpSessionStateFromContext método . Este ejemplo de código es parte de un ejemplo más grande proporcionado para la clase SessionStateUtility.
//
// Event handler for HttpApplication.ReleaseRequestState
//
private void OnReleaseRequestState(object source, EventArgs args)
{
HttpApplication app = (HttpApplication)source;
HttpContext context = app.Context;
string sessionID;
// Read the session state from the context
HttpSessionStateContainer stateProvider =
(HttpSessionStateContainer)(SessionStateUtility.GetHttpSessionStateFromContext(context));
// If Session.Abandon() was called, remove the session data from the local Hashtable
// and execute the Session_OnEnd event from the Global.asax file.
if (stateProvider.IsAbandoned)
{
try
{
pHashtableLock.AcquireWriterLock(Int32.MaxValue);
sessionID = pSessionIDManager.GetSessionID(context);
pSessionItems.Remove(sessionID);
}
finally
{
pHashtableLock.ReleaseWriterLock();
}
SessionStateUtility.RaiseSessionEnd(stateProvider, this, EventArgs.Empty);
}
SessionStateUtility.RemoveHttpSessionStateFromContext(context);
}
'
' Event handler for HttpApplication.ReleaseRequestState
'
Private Sub OnReleaseRequestState(ByVal [source] As Object, ByVal args As EventArgs)
Dim app As HttpApplication = CType([source], HttpApplication)
Dim context As HttpContext = app.Context
Dim sessionID As String
' Read the session state from the context
Dim stateProvider As HttpSessionStateContainer = _
CType(SessionStateUtility.GetHttpSessionStateFromContext(context), HttpSessionStateContainer)
' If Session.Abandon() was called, remove the session data from the local Hashtable
' and execute the Session_OnEnd event from the Global.asax file.
If stateProvider.IsAbandoned Then
Try
pHashtableLock.AcquireWriterLock(Int32.MaxValue)
sessionID = pSessionIDManager.GetSessionID(context)
pSessionItems.Remove(sessionID)
Finally
pHashtableLock.ReleaseWriterLock()
End Try
SessionStateUtility.RaiseSessionEnd(stateProvider, Me, EventArgs.Empty)
End If
SessionStateUtility.RemoveHttpSessionStateFromContext(context)
End Sub
Comentarios
Un módulo de estado de sesión puede usar el GetHttpSessionStateFromContext método para recuperar los datos de sesión de la solicitud actual. Esto ocurre durante el ReleaseRequestState evento al final de una solicitud. Los datos de sesión devueltos se pueden escribir en el almacén de datos de sesión. Si se ha abandonado la sesión, los datos de sesión se pueden quitar del almacén de datos y HttpContext, y se puede ejecutar el evento Session_OnEnd .
Notas a los desarrolladores de herederos
Puede usar el método para quitar los RemoveHttpSessionStateFromContext(HttpContext) datos de sesión del almacén interno y el RaiseSessionEnd(IHttpSessionState, Object, EventArgs) método para generar el Session_OnEnd
evento.