SessionStateUtility.GetHttpSessionStateFromContext(HttpContext) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Načte data relace z kontextu aktuálního požadavku.
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
Parametry
- context
- HttpContext
Ze HttpContext kterého chcete načíst data relace.
Návraty
Instance IHttpSessionState implementace naplněná daty relace z aktuálního požadavku.
Příklady
Následující příklad kódu ukazuje obslužnou rutinu ReleaseRequestState události ve vlastním modulu stavu relace. Modul načte data relace z HttpContext aktuálního požadavku pomocí GetHttpSessionStateFromContext metody . Tento příklad kódu je součástí většího příkladu SessionStateUtility pro třídu.
//
// 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
Poznámky
Metodu GetHttpSessionStateFromContext může modul stavu relace použít k načtení dat relace z aktuálního požadavku. K tomu dochází během ReleaseRequestState události na konci požadavku. Vrácená data relace se pak dají zapsat do úložiště dat relace. Pokud byla relace ukončena, je možné data relace odebrat z úložiště dat a HttpContextspustit událost Session_OnEnd .
Poznámky pro dědice
Můžete použít metodu RemoveHttpSessionStateFromContext(HttpContext) k odebrání dat relace z interního úložiště a metodu RaiseSessionEnd(IHttpSessionState, Object, EventArgs) pro vyvolání Session_OnEnd
události.