SessionStateStoreProviderBase Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan anggota penyedia status sesi yang diperlukan untuk penyimpanan data.
public ref class SessionStateStoreProviderBase abstract : System::Configuration::Provider::ProviderBase
public abstract class SessionStateStoreProviderBase : System.Configuration.Provider.ProviderBase
type SessionStateStoreProviderBase = class
inherit ProviderBase
Public MustInherit Class SessionStateStoreProviderBase
Inherits ProviderBase
- Warisan
Contoh
Untuk contoh implementasi penyedia penyimpanan status sesi, lihat Menerapkan Penyedia Penyimpanan Session-State.
Contoh kode berikut menunjukkan file Web.config untuk aplikasi ASP.NET yang dikonfigurasi untuk menggunakan penyedia penyimpanan status sesi kustom.
<configuration>
<connectionStrings>
<add name="OdbcSessionServices" connectionString="DSN=SessionState;" />
</connectionStrings>
<system.web>
<sessionState
mode="Custom"
customProvider="OdbcSessionProvider">
<providers>
<add name="OdbcSessionProvider"
type="Samples.AspNet.Session.OdbcSessionStateStore"
connectionStringName="OdbcSessionServices" />
</providers>
</sessionState>
</system.web>
</configuration>
Keterangan
ASP.NET status sesi membaca dan menulis data sesi dari dan ke penyimpanan data menggunakan penyedia penyimpanan status sesi. Penyedia penyimpanan status sesi adalah kelas yang mewarisi SessionStateStoreProviderBase kelas abstrak dan mengambil alih anggotanya dengan implementasi khusus untuk penyimpanan data. Penyedia penyimpanan status sesi dipanggil oleh SessionStateModule kelas selama pemrosesan halaman ASP.NET untuk berkomunikasi dengan penyimpanan data untuk penyimpanan dan pengambilan variabel sesi dan informasi sesi terkait seperti nilai waktu habis.
Data sesi dalam setiap aplikasi ASP.NET disimpan secara terpisah untuk setiap SessionID properti. ASP.NET aplikasi tidak berbagi data sesi.
Anda dapat menentukan implementasi kustom SessionStateStoreProviderBase untuk aplikasi ASP.NET dengan mengatur mode
atribut sessionState
elemen konfigurasi ke Custom dan customProvider
atribut ke nama penyedia kustom, seperti yang ditunjukkan dalam contoh untuk topik ini.
Mengunci Data Penyimpanan Sesi
Karena aplikasi ASP.NET multithreaded untuk mendukung menanggapi permintaan bersamaan, ada kemungkinan bahwa permintaan bersamaan mungkin mencoba mengakses informasi sesi yang sama. Pertimbangkan skenario di mana beberapa bingkai dalam frameset semuanya mengakses aplikasi yang sama. Permintaan terpisah untuk setiap bingkai dalam frameset dapat dijalankan di server Web secara bersamaan pada utas yang berbeda. Jika halaman ASP.NET untuk setiap variabel status sesi akses sumber bingkai, maka Anda dapat memiliki beberapa utas yang mengakses penyimpanan sesi secara bersamaan.
Untuk menghindari tabrakan data di penyimpanan sesi dan perilaku keadaan sesi yang tidak terduga, SessionStateModule kelas dan SessionStateStoreProviderBase menyertakan fungsi penguncian yang secara eksklusif mengunci item penyimpanan sesi untuk sesi tertentu selama durasi eksekusi halaman ASP.NET. Perhatikan bahwa meskipun EnableSessionState atribut ditandai sebagai ReadOnly
, halaman ASP.NET lain dalam aplikasi yang sama mungkin dapat menulis ke penyimpanan sesi, sehingga permintaan untuk data sesi baca-saja dari penyimpanan mungkin masih menunggu data terkunci dikosongkan.
Kunci diatur pada data penyimpanan sesi di awal permintaan, dalam panggilan ke GetItemExclusive metode . Ketika permintaan selesai, kunci dilepaskan selama panggilan ke SetAndReleaseItemExclusive metode .
SessionStateModule Jika objek menemukan data sesi terkunci selama panggilan ke GetItemExclusive metode atau GetItem , objek akan meminta kembali data sesi pada interval setengah detik hingga kunci dirilis atau jumlah waktu data sesi telah dikunci melebihi nilai ExecutionTimeout properti. Jika waktu eksekusi habis terlampaui, SessionStateModule objek akan memanggil ReleaseItemExclusive metode untuk membebaskan data penyimpanan sesi dan meminta data penyimpanan sesi pada saat itu.
Karena data penyimpanan sesi terkunci mungkin telah dibebaskan oleh panggilan ke ReleaseItemExclusive metode pada utas terpisah sebelum panggilan ke SetAndReleaseItemExclusive metode untuk respons saat ini, upaya dapat dilakukan untuk mengatur dan merilis data penyimpanan keadaan sesi yang telah dirilis dan dimodifikasi oleh sesi lain. Untuk menghindari situasi ini, GetItem metode dan GetItemExclusive mengembalikan pengidentifikasi kunci. Pengidentifikasi kunci ini harus disertakan dengan setiap permintaan untuk mengubah data penyimpanan sesi yang terkunci. Data penyimpanan sesi dimodifikasi hanya jika pengidentifikasi kunci di penyimpanan data cocok dengan pengidentifikasi kunci yang disediakan oleh SessionStateModule.
Menghapus Data Penyimpanan Sesi Kedaluwarsa
Abandon Ketika metode dipanggil untuk sesi tertentu, data untuk sesi tersebut dihapus dari penyimpanan data menggunakan RemoveItem metode ; jika tidak, data akan tetap berada di penyimpanan data sesi untuk server permintaan di masa mendatang untuk sesi tersebut. Terserah implementasi untuk menghapus data sesi yang SessionStateStoreProviderBase kedaluwarsa.
Konstruktor
SessionStateStoreProviderBase() |
Menginisialisasi instans baru kelas SessionStateStoreProviderBase. |
Properti
Description |
Mendapatkan deskripsi singkat dan ramah yang cocok untuk ditampilkan di alat administratif atau antarmuka pengguna (UI) lainnya. (Diperoleh dari ProviderBase) |
Name |
Mendapatkan nama yang mudah diingat yang digunakan untuk merujuk ke penyedia selama konfigurasi. (Diperoleh dari ProviderBase) |
Metode
CreateNewStoreData(HttpContext, Int32) |
Membuat objek baru SessionStateStoreData yang akan digunakan untuk permintaan saat ini. |
CreateUninitializedItem(HttpContext, String, Int32) |
Menambahkan item status sesi baru ke penyimpanan data. |
Dispose() |
Merilis semua sumber daya yang SessionStateStoreProviderBase digunakan oleh implementasi. |
EndRequest(HttpContext) |
Dipanggil SessionStateModule oleh objek di akhir permintaan. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) |
Mengembalikan data status sesi baca-saja dari penyimpanan data sesi. |
GetItemExclusive(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) |
Mengembalikan data status sesi baca-saja dari penyimpanan data sesi. |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
Initialize(String, NameValueCollection) |
Menginisialisasi penyusun konfigurasi. (Diperoleh dari ProviderBase) |
InitializeRequest(HttpContext) |
Dipanggil oleh SessionStateModule objek untuk inisialisasi per permintaan. |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
ReleaseItemExclusive(HttpContext, String, Object) |
Melepaskan kunci pada item di penyimpanan data sesi. |
RemoveItem(HttpContext, String, Object, SessionStateStoreData) |
Menghapus data item dari penyimpanan data sesi. |
ResetItemTimeout(HttpContext, String) |
Memperbarui tanggal dan waktu kedaluwarsa item di penyimpanan data sesi. |
SetAndReleaseItemExclusive(HttpContext, String, SessionStateStoreData, Object, Boolean) |
Memperbarui informasi item sesi di penyimpanan data status sesi dengan nilai dari permintaan saat ini, dan menghapus kunci pada data. |
SetItemExpireCallback(SessionStateItemExpireCallback) |
Mengatur referensi ke SessionStateItemExpireCallback delegasi untuk peristiwa yang |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |