SessionStateUtility.GetHttpSessionStateFromContext(HttpContext) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar sessionsdata från kontexten för den aktuella begäran.
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
Parametrar
- context
- HttpContext
Varifrån HttpContext sessionsdata ska hämtas.
Returer
En IHttpSessionState implementeringsinstans som fylls med sessionsdata från den aktuella begäran.
Exempel
I följande kodexempel visas hanteraren för händelsen i en modul för ReleaseRequestState anpassat sessionstillstånd. Modulen hämtar sessionsdata från HttpContext för den aktuella begäran med hjälp av GetHttpSessionStateFromContext metoden . Det här kodexemplet är en del av ett större exempel för SessionStateUtility klassen.
//
// 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
Kommentarer
Metoden GetHttpSessionStateFromContext kan användas av en sessionstillståndsmodul för att hämta sessionsdata från den aktuella begäran. Detta inträffar under ReleaseRequestState händelsen i slutet av en begäran. De returnerade sessionsdata kan sedan skrivas till sessionsdatalagret. Om sessionen har avbrutits kan sessionsdata tas bort från datalagret och HttpContext, och händelsen Session_OnEnd kan köras.
Anteckningar till arvingar
Du kan använda RemoveHttpSessionStateFromContext(HttpContext) metoden för att ta bort sessionsdata från det interna arkivet RaiseSessionEnd(IHttpSessionState, Object, EventArgs) och metoden för att skapa Session_OnEnd händelsen.