Поделиться через


SessionStateStoreProviderBase Класс

Определение

Определяет необходимые члены поставщика состояния сеанса для хранилища данных.

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
Наследование
SessionStateStoreProviderBase

Примеры

Пример реализации поставщика хранилища состояний сеанса см. в разделе "Реализация поставщика хранилища Session-State".

В следующем примере кода показан файл Web.config для приложения ASP.NET, настроенного для использования пользовательского поставщика хранилища состояний сеанса.

<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>

Комментарии

ASP.NET состояние сеанса считывает и записывает данные сеанса из хранилища данных и в хранилище данных с помощью поставщика хранилища состояний сеанса. Поставщик хранилища состояний сеанса — это класс, наследующий SessionStateStoreProviderBase абстрактный класс и переопределяет его члены с реализацией, характерными для хранилища данных. Поставщик хранилища состояний сеанса вызывается классом SessionStateModule во время обработки страницы ASP.NET для взаимодействия с хранилищем данных для хранения и извлечения переменных сеанса и связанных сведений о сеансе, таких как значение времени ожидания.

Данные сеанса в каждом приложении ASP.NET хранятся отдельно для каждого SessionID свойства. ASP.NET приложения не совместно используют данные сеанса.

Настраиваемую SessionStateStoreProviderBase реализацию для приложения ASP.NET можно указать, задав mode атрибут sessionState элемента Custom конфигурации и customProvider атрибут имени настраиваемого поставщика, как показано в примере этого раздела.

Блокировка данных хранилища сеансов

Так как ASP.NET приложения многопоточные для поддержки реагирования на одновременные запросы, возможно, что одновременные запросы могут пытаться получить доступ к одной и той же информации сеанса. Рассмотрим сценарий, в котором несколько кадров в наборе кадров получают доступ к одному приложению. Отдельные запросы для каждого кадра в наборе кадров могут выполняться одновременно на веб-сервере в разных потоках. Если ASP.NET страницы для каждой переменной состояния сеанса доступа к источнику кадра, можно одновременно получить несколько потоков, обращаюющихся к хранилищу сеансов.

Чтобы избежать конфликтов данных в хранилище сеансов и непредвиденном поведении состояния сеанса, классы SessionStateModuleSessionStateStoreProviderBase включают функции блокировки, которые исключительно блокируют элемент хранилища сеансов для определенного сеанса в течение срока выполнения страницы ASP.NET. Обратите внимание, что даже если EnableSessionState атрибут помечен как ReadOnly, другие ASP.NET страницы в том же приложении могут иметь возможность записывать в хранилище сеансов, поэтому запрос на получение данных сеанса только для чтения из хранилища может по-прежнему ожидать освобождения заблокированных данных.

Блокировка устанавливается в данных хранилища сеансов в начале запроса в вызове GetItemExclusive метода. По завершении запроса блокировка освобождается во время вызова SetAndReleaseItemExclusive метода.

SessionStateModule Если объект сталкивается с заблокированными данными сеанса во время вызова GetItemExclusive метода или GetItem метода, он повторно запрашивает данные сеанса через пол-секунды, пока блокировка не будет освобождена, или время блокировки, которое данные сеанса были заблокированы, превышает значение ExecutionTimeout свойства. Если превышено время ожидания выполнения, SessionStateModule объект вызовет ReleaseItemExclusive метод, чтобы освободить данные хранилища сеансов и запросить данные хранилища сеансов в то время.

Так как заблокированные данные хранилища сеансов могут быть освобождены вызовом метода в отдельном потоке перед вызовом ReleaseItemExclusiveSetAndReleaseItemExclusive метода для текущего ответа, попытка установить и освободить данные хранилища состояний сеанса, которые уже были выпущены и изменены другим сеансом. Чтобы избежать этой ситуации, GetItemGetItemExclusive методы возвращают идентификатор блокировки. Этот идентификатор блокировки должен быть включен в каждый запрос для изменения заблокированных данных хранилища сеансов. Данные хранилища сеансов изменяются только в том случае, если идентификатор блокировки в хранилище данных соответствует идентификатору блокировки, предоставленному параметром SessionStateModule.

Удаление данных хранилища сеансов с истекшим сроком действия

Abandon При вызове метода для определенного сеанса данные для этого сеанса удаляются из хранилища данных с помощью RemoveItem метода. В противном случае данные будут оставаться в хранилище данных сеанса на сервере будущих запросов сеанса. Реализация выполняется для удаления данных сеанса с истекшим сроком SessionStateStoreProviderBase действия.

Конструкторы

Имя Описание
SessionStateStoreProviderBase()

Инициализирует новый экземпляр класса SessionStateStoreProviderBase.

Свойства

Имя Описание
Description

Получает краткое понятное описание, подходящее для отображения в средствах администрирования или других пользовательских интерфейсах (UIs).

(Унаследовано от ProviderBase)
Name

Возвращает понятное имя, используемое для ссылки на поставщика во время настройки.

(Унаследовано от ProviderBase)

Методы

Имя Описание
CreateNewStoreData(HttpContext, Int32)

Создает новый SessionStateStoreData объект, используемый для текущего запроса.

CreateUninitializedItem(HttpContext, String, Int32)

Добавляет новый элемент состояния сеанса в хранилище данных.

Dispose()

Освобождает все ресурсы, используемые реализацией SessionStateStoreProviderBase .

EndRequest(HttpContext)

SessionStateModule Вызывается объектом в конце запроса.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

Возвращает данные о состоянии сеанса только для чтения из хранилища данных сеанса.

GetItemExclusive(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

Возвращает данные о состоянии сеанса только для чтения из хранилища данных сеанса.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
Initialize(String, NameValueCollection)

Инициализирует построитель конфигураций.

(Унаследовано от ProviderBase)
InitializeRequest(HttpContext)

SessionStateModule Вызывается объектом для инициализации каждого запроса.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ReleaseItemExclusive(HttpContext, String, Object)

Освобождает блокировку элемента в хранилище данных сеанса.

RemoveItem(HttpContext, String, Object, SessionStateStoreData)

Удаляет данные элемента из хранилища данных сеанса.

ResetItemTimeout(HttpContext, String)

Обновляет дату и время окончания срока действия элемента в хранилище данных сеанса.

SetAndReleaseItemExclusive(HttpContext, String, SessionStateStoreData, Object, Boolean)

Обновляет сведения о элементе сеанса в хранилище данных состояния сеанса со значениями из текущего запроса и очищает блокировку данных.

SetItemExpireCallback(SessionStateItemExpireCallback)

Задает ссылку на SessionStateItemExpireCallback делегат для Session_OnEnd события, определенного в файле Global.asax.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел