İngilizce dilinde oku

Aracılığıyla paylaş


IHttpSessionState Arabirim

Tanım

Özel oturum durumu kapsayıcısı uygulamak için sözleşmeyi tanımlar.

C#
public interface IHttpSessionState
Türetilmiş

Örnekler

Aşağıdaki kod örneği adlı MySessionStateyeni bir oturum durumu kapsayıcı sınıfı oluşturmak için arabirimini uygularIHttpSessionState.

C#
using System;
using System.Web;
using System.Web.SessionState;
using System.Collections;
using System.Collections.Specialized;
using System.Text;
using System.Threading;
using System.Globalization;

namespace Samples.AspNet.SessionState
{
  public sealed class MySessionState : IHttpSessionState
  {
    const int MAX_TIMEOUT = 24 * 60;  // Timeout cannot exceed 24 hours.

    string                      pId;
    ISessionStateItemCollection pSessionItems;
    HttpStaticObjectsCollection pStaticObjects;
    int                         pTimeout;
    bool                        pNewSession;
    HttpCookieMode              pCookieMode;
    SessionStateMode            pMode;
    bool                        pAbandon;
    bool                        pIsReadonly;

    public MySessionState(string                      id, 
                          ISessionStateItemCollection sessionItems,
                          HttpStaticObjectsCollection staticObjects,
                          int                         timeout,
                          bool                        newSession,
                          HttpCookieMode              cookieMode,
                          SessionStateMode            mode,
                          bool                        isReadonly)
    {
      pId            = id;   
      pSessionItems  = sessionItems;
      pStaticObjects = staticObjects;
      pTimeout       = timeout;    
      pNewSession    = newSession; 
      pCookieMode    = cookieMode;
      pMode          = mode;
      pIsReadonly    = isReadonly;
    }

    public int Timeout
    {
      get { return pTimeout; }
      set
      {
        if (value <= 0)
          throw new ArgumentException("Timeout value must be greater than zero.");

        if (value > MAX_TIMEOUT)
          throw new ArgumentException("Timout cannot be greater than " + MAX_TIMEOUT.ToString());

        pTimeout = value;
      }
    }

    public string SessionID
    {
      get { return pId; }
    }

    public bool IsNewSession
    {
      get { return pNewSession; }
    }

    public SessionStateMode Mode
    {
      get { return pMode; }
    }

    public bool IsCookieless
    {
      get { return CookieMode == HttpCookieMode.UseUri; }
    }

    public HttpCookieMode CookieMode
    {
      get { return pCookieMode; }
    }

    //
    // Abandon marks the session as abandoned. The IsAbandoned property is used by the
    // session state module to perform the abandon work during the ReleaseRequestState event.
    //
    public void Abandon()
    {
      pAbandon = true;
    }

    public bool IsAbandoned
    {
      get { return pAbandon; }
    }

    //
    // Session.LCID exists only to support legacy ASP compatibility. ASP.NET developers should use
    // Page.LCID instead.
    //
    public int LCID
    {
      get { return Thread.CurrentThread.CurrentCulture.LCID; }
      set { Thread.CurrentThread.CurrentCulture = CultureInfo.ReadOnly(new CultureInfo(value)); }
    }

    //
    // Session.CodePage exists only to support legacy ASP compatibility. ASP.NET developers should use
    // Response.ContentEncoding instead.
    //
    public int CodePage
    {
      get
      { 
        if (HttpContext.Current != null)
          return HttpContext.Current.Response.ContentEncoding.CodePage;
        else
          return Encoding.Default.CodePage;
      }
      set
      { 
        if (HttpContext.Current != null)
          HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding(value);
      }
    }

    public HttpStaticObjectsCollection StaticObjects
    {
      get { return pStaticObjects; }
    }

    public object this[string name]
    {
      get { return pSessionItems[name]; }
      set { pSessionItems[name] = value; }
    }

    public object this[int index]
    {
      get { return pSessionItems[index]; }
      set { pSessionItems[index] = value; }
    }

    public void Add(string name, object value)
    {
      pSessionItems[name] = value;        
    }

    public void Remove(string name)
    {
      pSessionItems.Remove(name);
    }

    public void RemoveAt(int index)
    {
      pSessionItems.RemoveAt(index);
    }

    public void Clear()
    {
      pSessionItems.Clear();
    }

    public void RemoveAll()
    {
        Clear();
    }

    public int Count
    {
      get { return pSessionItems.Count; }
    }

    public NameObjectCollectionBase.KeysCollection Keys
    {
      get { return pSessionItems.Keys; }
    }

    public IEnumerator GetEnumerator()
    {
      return pSessionItems.GetEnumerator();
    }

    public void CopyTo(Array items, int index)
    {
      foreach (object o in items)
        items.SetValue(o, index++);
    }

    public object SyncRoot
    {
        get { return this; }
    }

    public bool IsReadOnly
    {
      get { return pIsReadonly; }
    }

    public bool IsSynchronized
    {
      get { return false; }
    }
  }
}

Açıklamalar

Oturum durumu kapsayıcısı, geçerli oturum için oturum durumu değerlerine ve ilgili bilgilere erişim sağlar. Oturum durumu kapsayıcısına dahil edilen oturum bilgileri, özelliği kullanılarak sınıfı aracılığıyla uygulama koduna HttpSessionStateSession sunulur. HttpSessionState sınıfı, oturum durumu kapsayıcısı için sarmalayıcı sınıfıdır.

Oturum durumu kapsayıcısının ASP.NET uygulaması sınıfıdır HttpSessionStateContainer . İsteğin başında, olay sırasında AcquireRequestState nesnesi SessionStateModuleHttpSessionStateContainer oluşturulur ve doldurulur ve geçerli HttpContextöğesine atanır. bir isteğin sonunda, olay SessionStateModule sırasında ReleaseRequestState nesnesi geçerli HttpContext nesneden alır HttpSessionStateContainer ve oturum değerlerini oturum deposuna yazma veya oturumu bırakma gibi gerekli oturum çalışmalarını gerçekleştirir. İstek, örneğin bir yeniden yönlendirme aracılığıyla aniden sonlandırılırsa, SessionStateModule yöntemi çağrılarak aynı temizlemeyi EndRequest gerçekleştirir.

Özel oturum durumu kapsayıcısı oluşturmak için arabirimini uygulayan IHttpSessionState bir sınıf oluşturun. Kendi özel oturum durumu kapsayıcınızı oluşturuyorsanız, öğesini SessionStateModule kendi özel modülünüzle de değiştirmeniz gerekir. Özel modülünüz, özel oturum durumu kapsayıcınızın bir örneğini oluşturur ve yöntemini kullanarak geçerli HttpContext modülüne AddHttpSessionStateToContext ekler. Sınıfa genel bakış bölümünde özel oturum durumu modülü örneği verilmiştir SessionStateUtility .

Özellikler

CodePage

Geçerli oturum için kod sayfası tanımlayıcısını alır veya ayarlar.

CookieMode

Uygulamanın tanımlama bilgisi olmayan oturumlar için yapılandırılıp yapılandırılmadığını gösteren bir değer alır.

Count

Oturum durumu öğe koleksiyonundaki öğe sayısını alır.

IsCookieless

Oturum kimliğinin URL'ye mi eklendiğini yoksa http tanımlama bilgisinde mi depolandığını belirten bir değer alır.

IsNewSession

Oturumun geçerli istekle oluşturulup oluşturulmadığını belirten bir değer alır.

IsReadOnly

Oturumun salt okunur olup olmadığını belirten bir değer alır.

IsSynchronized

Oturum durumu değerleri koleksiyonuna erişimin eşitlenip eşitlenmediğini belirten bir değer alır (iş parçacığı güvenli).

Item[Int32]

Sayısal dizine göre oturum durumu öğe değerini alır veya ayarlar.

Item[String]

Oturum durumu öğe değerini ada göre alır veya ayarlar.

Keys

Oturum durumu öğe koleksiyonunda depolanan tüm değerler için anahtarların bir koleksiyonunu alır.

LCID

Geçerli oturumun yerel ayar tanımlayıcısını (LCID) alır veya ayarlar.

Mode

Geçerli oturum durumu modunu alır.

SessionID

Oturumun benzersiz oturum tanımlayıcısını alır.

StaticObjects

ASP.NET uygulama dosyası Global.asax içindeki etiketler tarafından <object Runat="Server" Scope="Session"/> bildirilen nesne koleksiyonunu alır.

SyncRoot

Oturum durumu değerleri koleksiyonuna erişimi eşitlemek için kullanılabilecek bir nesne alır.

Timeout

Oturum durumu sağlayıcısı oturumu sonlandırmadan önce istekler arasında izin verilen zaman aşımı süresini (dakika cinsinden) alır veya ayarlar.

Yöntemler

Abandon()

Geçerli oturumu sonlandırır.

Add(String, Object)

Oturum durumu koleksiyonuna yeni bir öğe ekler.

Clear()

Oturum durumu öğe koleksiyonundaki tüm değerleri temizler.

CopyTo(Array, Int32)

Oturum durumu öğe değerleri koleksiyonunu dizideki belirtilen dizinden başlayarak tek boyutlu bir diziye kopyalar.

GetEnumerator()

Geçerli oturumdaki tüm oturum durumu öğe değerlerini okumak için kullanılabilecek bir numaralandırıcı döndürür.

Remove(String)

Oturum durumu öğe koleksiyonundan bir öğeyi siler.

RemoveAll()

Oturum durumu öğe koleksiyonundaki tüm değerleri temizler.

RemoveAt(Int32)

Belirtilen dizindeki bir öğeyi oturum durumu öğe koleksiyonundan siler.

Şunlara uygulanır

Ürün Sürümler
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Ayrıca bkz.