HttpSessionStateContainer Konstruktor
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy nowy HttpSessionStateContainer obiekt i inicjuje go przy użyciu określonych ustawień i wartości.
public:
HttpSessionStateContainer(System::String ^ id, System::Web::SessionState::ISessionStateItemCollection ^ sessionItems, System::Web::HttpStaticObjectsCollection ^ staticObjects, int timeout, bool newSession, System::Web::HttpCookieMode cookieMode, System::Web::SessionState::SessionStateMode mode, bool isReadonly);
public HttpSessionStateContainer(string id, System.Web.SessionState.ISessionStateItemCollection sessionItems, System.Web.HttpStaticObjectsCollection staticObjects, int timeout, bool newSession, System.Web.HttpCookieMode cookieMode, System.Web.SessionState.SessionStateMode mode, bool isReadonly);
new System.Web.SessionState.HttpSessionStateContainer : string * System.Web.SessionState.ISessionStateItemCollection * System.Web.HttpStaticObjectsCollection * int * bool * System.Web.HttpCookieMode * System.Web.SessionState.SessionStateMode * bool -> System.Web.SessionState.HttpSessionStateContainer
Public Sub New (id As String, sessionItems As ISessionStateItemCollection, staticObjects As HttpStaticObjectsCollection, timeout As Integer, newSession As Boolean, cookieMode As HttpCookieMode, mode As SessionStateMode, isReadonly As Boolean)
Parametry
- id
- String
Identyfikator sesji dla nowej sesji. Jeśli nullparametr jest ArgumentException zgłaszany.
- sessionItems
- ISessionStateItemCollection
Element ISessionStateItemCollection zawierający wartości sesji dla nowego dostawcy stanu sesji.
- staticObjects
- HttpStaticObjectsCollection
HttpStaticObjectsCollection, który określa obiekty zadeklarowane przez <object Runat="Server" Scope="Session"/> tagów w pliku aplikacji ASP.NET Global.asax.
- timeout
- Int32
Czas w minutach dozwolony między żądaniami przed zakończeniem sesji przez dostawcę stanu sesji.
- newSession
- Boolean
true aby wskazać, że sesja została utworzona przy użyciu bieżącego żądania; w przeciwnym razie, false.
- cookieMode
- HttpCookieMode
Element CookieMode dla nowego dostawcy stanu sesji.
- mode
- SessionStateMode
SessionStateMode Jedna z wartości określających bieżący tryb stanu sesji.
- isReadonly
- Boolean
true aby wskazać, że sesja jest tylko do odczytu; w przeciwnym razie, false.
Wyjątki
Parametr id ma wartość null.
Przykłady
Poniższy przykład kodu przedstawia procedurę AcquireRequestState obsługi zdarzeń dla niestandardowego modułu stanu sesji, który wypełnia nowy obiekt nowymi HttpSessionStateContainer lub istniejącymi informacjami o sesji i dodaje go do HttpContext bieżącego żądania przy użyciu AddHttpSessionStateToContext metody . Pełny przykład kodu modułu niestandardowego stanu sesji można znaleźć w SessionStateUtility przeglądu klasy.
//
// Event handler for HttpApplication.AcquireRequestState
//
private void OnAcquireRequestState(object source, EventArgs args)
{
HttpApplication app = (HttpApplication)source;
HttpContext context = app.Context;
bool isNew = false;
string sessionID;
SessionItem sessionData = null;
bool supportSessionIDReissue = true;
pSessionIDManager.InitializeRequest(context, false, out supportSessionIDReissue);
sessionID = pSessionIDManager.GetSessionID(context);
if (sessionID != null)
{
try
{
pHashtableLock.AcquireReaderLock(Int32.MaxValue);
sessionData = (SessionItem)pSessionItems[sessionID];
if (sessionData != null)
sessionData.Expires = DateTime.Now.AddMinutes(pTimeout);
}
finally
{
pHashtableLock.ReleaseReaderLock();
}
}
else
{
bool redirected, cookieAdded;
sessionID = pSessionIDManager.CreateSessionID(context);
pSessionIDManager.SaveSessionID(context, sessionID, out redirected, out cookieAdded);
if (redirected)
return;
}
if (sessionData == null)
{
// Identify the session as a new session state instance. Create a new SessionItem
// and add it to the local Hashtable.
isNew = true;
sessionData = new SessionItem();
sessionData.Items = new SessionStateItemCollection();
sessionData.StaticObjects = SessionStateUtility.GetSessionStaticObjects(context);
sessionData.Expires = DateTime.Now.AddMinutes(pTimeout);
try
{
pHashtableLock.AcquireWriterLock(Int32.MaxValue);
pSessionItems[sessionID] = sessionData;
}
finally
{
pHashtableLock.ReleaseWriterLock();
}
}
// Add the session data to the current HttpContext.
SessionStateUtility.AddHttpSessionStateToContext(context,
new HttpSessionStateContainer(sessionID,
sessionData.Items,
sessionData.StaticObjects,
pTimeout,
isNew,
pCookieMode,
SessionStateMode.Custom,
false));
// Execute the Session_OnStart event for a new session.
if (isNew && Start != null)
{
Start(this, EventArgs.Empty);
}
}
//
// Event for Session_OnStart event in the Global.asax file.
//
public event EventHandler Start;
'
' Event handler for HttpApplication.AcquireRequestState
'
Private Sub OnAcquireRequestState(ByVal [source] As Object, ByVal args As EventArgs)
Dim app As HttpApplication = CType([source], HttpApplication)
Dim context As HttpContext = app.Context
Dim isNew As Boolean = False
Dim sessionID As String
Dim sessionData As SessionItem = Nothing
Dim supportSessionIDReissue As Boolean = True
pSessionIDManager.InitializeRequest(context, False, supportSessionIDReissue)
sessionID = pSessionIDManager.GetSessionID(context)
If Not (sessionID Is Nothing) Then
Try
pHashtableLock.AcquireReaderLock(Int32.MaxValue)
sessionData = CType(pSessionItems(sessionID), SessionItem)
If Not (sessionData Is Nothing) Then
sessionData.Expires = DateTime.Now.AddMinutes(pTimeout)
End If
Finally
pHashtableLock.ReleaseReaderLock()
End Try
Else
Dim redirected, cookieAdded As Boolean
sessionID = pSessionIDManager.CreateSessionID(context)
pSessionIDManager.SaveSessionID(context, sessionID, redirected, cookieAdded)
If redirected Then Return
End If
If sessionData Is Nothing Then
' Identify the session as a new session state instance. Create a new SessionItem
' and add it to the local Hashtable.
isNew = True
sessionData = New SessionItem()
sessionData.Items = New SessionStateItemCollection()
sessionData.StaticObjects = SessionStateUtility.GetSessionStaticObjects(context)
sessionData.Expires = DateTime.Now.AddMinutes(pTimeout)
Try
pHashtableLock.AcquireWriterLock(Int32.MaxValue)
pSessionItems(sessionID) = sessionData
Finally
pHashtableLock.ReleaseWriterLock()
End Try
End If
' Add the session data to the current HttpContext.
SessionStateUtility.AddHttpSessionStateToContext(context, _
New HttpSessionStateContainer(sessionID, _
sessionData.Items, _
sessionData.StaticObjects, _
pTimeout, _
isNew, _
pCookieMode, _
SessionStateMode.Custom, _
False))
' Execute the Session_OnStart event for a new session.
If isNew Then RaiseEvent Start(Me, EventArgs.Empty)
End Sub
'
' Event for Session_OnStart event in the Global.asax file.
'
Public Event Start As EventHandler