Элемент sessionState (схема параметров ASP.NET)

Настраивает параметры состояния сеанса для текущего приложения.

<sessionState 
    mode="[Off|InProc|StateServer|SQLServer|Custom]"
    timeout="number of minutes"
    cookieName="session identifier cookie name"
    cookieless=
         "[true|false|AutoDetect|UseCookies|UseUri|UseDeviceProfile]"
    regenerateExpiredSessionId="[True|False]"
    sessionIDManagerType="session manager type"
    sqlConnectionString="sql connection string"
    sqlCommandTimeout="number of seconds"
    allowCustomSqlDatabase="[True|False]"
    useHostingIdentity="[True|False]"
    stateConnectionString="tcpip=server:port"
    stateNetworkTimeout="number of seconds"
    customProvider="custom provider name"
    compressionEnabled="[True|False]"
    sqlConnectionRetryInterval="number of seconds">
    <providers>...</providers>
</sessionState>

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут

Описание

allowCustomSqlDatabase

Необязательный атрибут элемента Boolean.

Указывает, можно ли базой данных SQL состояний сеансов сделать пользовательскую базу данных, вместо базы данных ASP.NET по умолчанию. Если атрибут имеет значение false, ни исходный каталог, ни база данных не могут задаваться как значение для атрибута sqlConnectionString. По умолчанию базой данных SQL состояний сеансов является база данных ASPState. Дополнительные сведения см. в разделе Режимы состояний сеанса.

Этот атрибут не использовался до .NET Framework версии 2.0.

Значение по умолчанию — false.

compressionEnabled

Необязательный атрибут элемента Boolean.

Указывает, применяется ли сжатие данных состояния сеанса.

Значение по умолчанию — false.

cookieless

Необязательный атрибут элемента HttpCookieMode.

Указывает, как в веб-приложении используются файлы Cookie.

Атрибутcookieless может принимать только следующие значения. Значение по умолчанию — UseCookies.

ПримечаниеПримечание
При настройке веб-узла ASP.NET с включенной поддержкой AJAX, используйте для атрибута cookieless только значение по умолчанию UseCookies.Параметры, использующие файлы Cookie, закодированные в URL-адресе, библиотеками клиентских скриптов ASP.NET AJAX не поддерживаются.
ЗначениеОписание
AutoDetect Поддерживает ли запрашивающий браузер или запрашивающее устройство файлы Cookie, определяется платформой ASP.NET.Если запрашивающий обозреватель или запрашивающее устройство поддерживает файлы Cookie, AutoDetect для хранения пользовательских данных использует файлы Сookie; в противном случае используется идентификатор в строке запроса.Если обозреватель или устройство поддерживает файлы Cookie, но эти файлы в настоящее время отключены, файлы Cookie все-таки используются механизмом запроса.
UseCookies Файлы Cookie хранят данные пользователя, независимо от того, поддерживает ли обозреватель или устройство файлы Cookie.
UseDeviceProfile ASP.NET определяет, применять ли файлы Cookie, на основании параметра HttpBrowserCapabilities.Если параметр HttpBrowserCapabilities указывает, что обозреватель или устройство поддерживает файлы Cookie, то будут использоваться эти файлы; в противном случае используется идентификатор в строке запроса.
UseUri Вызывающий механизм использует строку запроса для хранения идентификатора, независимо от того, поддерживает ли обозреватель или устройство файлы Cookie.

cookieName

Необязательный атрибут элемента String.

Задает имя файла Cookie, в котором хранится идентификатор сеанса.

Этот атрибут не использовался до .NET Framework версии 2.0.

По умолчанию используется значение "ASP.NET_SessionId".

customProvider

Необязательный атрибут элемента String.

Задает имя пользовательского поставщика состояний сеансов, которое используется для хранения и извлечения данных состояния сеанса. Поставщик задается в элементе providers. Поставщик используется, если только для режима состояния сеанса установлено значение Custom. Дополнительные сведения см. в разделе Режимы состояний сеанса.

Этот атрибут не использовался до .NET Framework версии 2.0.

Значение по умолчанию — пустая строка ("").

mode

Необязательный атрибут элемента SessionStateMode.

Указывает, где должны храниться значения состояния сеанса. Дополнительные сведения см. в разделе Режимы состояний сеанса.

Атрибутmode может принимать только следующие значения. Значение по умолчанию — InProc.

ЗначениеОписание
Custom Для хранения сведений о состоянии сеанса используется пользовательское хранилище данных.
InProc Состояние сеанса обрабатывается рабочим процессом ASP.NET.
Off Состояние сеанса отключено.
SQLServer Для хранения сведений о состоянии сеанса используется внепроцессная база данных SQL Server.
StateServer Для хранения сведений о состоянии сеанса используется находящаяся вне процесса служба состояний ASP.NET.

partitionResolverType

Необязательный атрибут элемента String.

Указывает, где должно храниться состояние сеанса. Если в partitionResolverType задается значение, атрибуты sqlConnectionString и stateConnectionString пропускаются. Строка подключения, возвращаемая свойством PartitionResolverType, используется в каждом запросе для подключения к соответствующему серверу для остальной части запроса. Если строка подключения недопустима, ASP.NET вызывает такое же исключение, что и в ситуации, когда заданная строка подключения к серверу недопустима. Это свойство используется для распределения данных состояния сеанса на нескольких серверах в режиме сервера SQL или сервера состояний.

Этот атрибут не использовался до .NET Framework версии 2.0.

Значение по умолчанию — пустая строка.

regenerateExpiredSessionId

Необязательный атрибут элемента Boolean.

Задает, будет ли повторно выдан идентификатор сеанса, если клиент указывает идентификатор сеанса с истекшим сроком действия. По умолчанию идентификаторы сеанса повторно выдаются только в режиме cookieless, если включен параметр regenerateExpiredSessionId. Дополнительные сведения см. в разделе IsCookieless.

Этот атрибут не использовался до .NET Framework версии 2.0.

Значение по умолчанию — true.

sessionIDManagerType

Необязательный атрибут элемента String.

Задает полный тип менеджера идентификатора сеанса. Значение по умолчанию — пустая строка.

sqlCommandTimeout

Необязательный атрибут элемента TimeSpan.

Указывает время ожидания в секундах для команд SQL, использующих режим состояния сеанса SQL Server. Это время ожидания определяет, сколько секунд команда SQL может бездействовать до того, как она будет отменена.

Этот атрибут не использовался до .NET Framework версии 2.0.

Значение по умолчанию — 0:00:30 (30 секунд).

sqlConnectionRetryInterval

Необязательный атрибут элемента TimeSpan.

Задает интервал времени в секундах между попытками подключения к базе данных.

По умолчанию используется значение 0 секунд.

sqlConnectionString

Необязательный атрибут элемента String.

Задает строку подключения для компьютера, на котором выполняется SQL Server. Этот атрибут необходим, если для атрибута mode установлено значение SQLServer. Дополнительные сведения см. в разделе Режимы состояний сеанса.

Для этого атрибута можно установить именованную строку sqlConnectionString из узла connectionStrings или использовать следующий синтаксис:

sqlConnectionString="Data Source=.\SQLServer2005;Initial Catalog=SessionState;Integrated Security=SSPI;"
ПримечаниеПримечание
Для большей безопасности приложения при использовании режима SQLServer используйтеProtected Configuration, чтобы защитить значение sqlConnectionString за счет шифрования раздела конфигурации sessionState.

По умолчанию используется значение "data source=127.0.0.1;Integrated Security=SSPI".

stateConnectionString

Необязательный атрибут элемента String.

Задает имя сервера или адрес и порт, на котором будет удаленно сохраняться состояние сеанса. Значением порта должно быть 42424. Этот атрибут необходим, если mode имеет значение StateServer. Убедитесь, что на удаленном сервере запущена служба состояний ASP.NET, сохраняющая сведения о состоянии сеанса. Эта служба устанавливается вместе с ASP.NET и по умолчанию располагается в %windir%\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe. Дополнительные сведения см. в разделе Режимы состояний сеанса.

ПримечаниеПримечание
Для большей безопасности приложения при использовании режима StateServer используйте Protected Configuration, чтобы защитить значение stateConnectionString за счет шифрования раздела конфигурации sessionState.

По умолчанию используется значение "tcpip=127.0.0.1:42424".

stateNetworkTimeout

Необязательный атрибут элемента TimeSpan.

Указывает время в секундах, в течение которого сетевое подключение TCP/IP между веб-сервером и сервером состояний может быть неактивным до отмены запроса. Этот атрибут используется, если для атрибута mode установлено значение StateServer.

Значение по умолчанию — 10 секунд.

timeout

Необязательный атрибут элемента TimeSpan.

Задает время в минутах, в течение которого сеанс может быть неактивным до его завершения. Для атрибута timeout нельзя установить значение, большее 525 600 минут (1 год) для внутрипроцессного режима и режима сервера состояний.

Параметр конфигурации сеанса timeout применяется только к страницам ASP.NET. Изменение значения timeout сеанса не оказывает влияния на время ожидания сеанса для страниц ASP. Аналогично, изменение времени ожидания сеанса для страниц ASP не оказывает влияния на время ожидания сеанса для страниц ASP.NET.

Значение по умолчанию — 20 минут.

useHostingIdentity

Необязательный атрибут элемента Boolean.

Указывает, возвращается ли состояние сеанса к удостоверению основного процесса или используется олицетворение клиента.

При значении true ASP.NET подключается к хранилищу состояний сеанса, используя следующие учетные данные.

  • Основной процесс, которым является ASPNET для Microsoft Internet Information Services (IIS) версий 5 и 5.1 или NETWORK SERVICE для Microsoft Windows Server 2003.

  • Удостоверение олицетворения приложения, используемое при следующей конфигурации:

    <identity impersonate="true" userName="домен\имя_пользователя" password="пароль" />

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

Этот атрибут не использовался до .NET Framework версии 2.0.

Значение по умолчанию — true.

ПримечаниеПримечание
В .NET Framework версии 1.1, если для атрибута mode установлено значение SQLServer и действует олицетворение клиента, ASP.NET подключается к компьютеру, на котором выполняется SQL Server, используя учетные данные клиента из олицетворения клиента ASP.NET.

Наследуемые атрибуты

Необязательные атрибуты.

Атрибуты, наследуемые всеми элементами раздела.

Дочерние элементы

Элемент

Описание

providers

Содержит коллекцию пользовательских поставщиков хранилища состояний сеанса.

Родительские элементы

Элемент

Описание

configuration

Необходимый корневой элемент любого файла конфигурации, который используется средой CLR и приложениями платформы .NET Framework.

system.web

Задает корневой элемент для параметров конфигурации ASP.NET в файле конфигурации и содержит элементы конфигурации для настройки веб-приложений ASP.NET и управления поведением этих приложений.

Заметки

Элемент <sessionState> настраивает параметры состояния сеанса для текущего приложения.

Когда новый клиент начинает взаимодействовать с веб-приложением, выдается идентификатор сеанса, который связывается со всеми последующими запросами от того же клиента, пока сеанс действителен. Этот идентификатор используется для сохранения состояния на стороне сервера, связанного со всеми запросами сеанса клиента. Элемент <sessionState> контролирует то, как приложение ASP.NET устанавливает и поддерживает эту связь для каждого клиента.

Этот механизм весьма гибок и позволяет, наряду со многими другими возможностями, размещать сведения о состоянии сеанса вне процесса и отслеживать состояние, не используя файлы Cookie.

При пересылке идентификатора сеанса в URI максимальный размер URI может быть превышен. Если общая длина билета анонимного идентификатора, билета подлинности форм, идентификатора сеанса и данных пользователя больше максимально допустимой длины URI, запрос завершится неудачно с ошибкой 400-Bad Request (неверный запрос).

Использование режима StateServer

  1. Убедитесь, что на удаленном сервере, на котором должны храниться сведения о состоянии сеанса, запущена служба состояний ASP.NET.

    Эта служба устанавливается вместе с ASP.NET и по умолчанию располагается в %windir%\Microsoft.NET\Framework\версия\aspnet_state.exe.

  2. В файле Web.config для приложения установите mode в "StateServer", а для stateConnectionString задайте значение, например, "tcpip=dataserver:42424".

Использование режима SQLServer

  1. На компьютере, на котором выполняется сервер SQL Server, хранящий состояние сеанса, запустите InstallSqlState.sql.

    По умолчанию InstallSqlState.sql находится в папке %windir%\Microsoft.NET\Framework\версия.

    При этом будет создана база данных ASPState с новыми хранимыми процедурами и таблицы, а в базе данных TempDB будут созданы таблицы ASPStateTempApplications и ASPStateTempSessions.

  2. В файле Web.config для приложения установите mode в "SQLServer", а для sqlConnectionString задайте значение, например, "data source=localhost;Integrated Security=SSPI;".

    ПримечаниеПримечание

    Чтобы выполнить эти шаги, можно использовать Aspnet_regsql.exe.

Сведения о доступе к значениям конфигурации элемента <sessionState> в коде приложения и об изменении этих значений см. в разделах SessionStateSection и System.Web.SessionState.

Настройки по умолчанию

Следующий установленный по умолчанию элемент <sessionState> не задается явно ни в файле Machine.config, ни в корневом файле Web.config. Однако он представляет собой конфигурацию по умолчанию, возвращаемую приложением.

<sessionState 
   mode="InProc" 
   stateConnectionString="tcpip=127.0.0.1:42424" 
   stateNetworkTimeout="10" 
   sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" 
   sqlCommandTimeout="30" 
   customProvider="" 
   cookieless="UseCookies" 
   cookieName="ASP.NET_SessionId" 
   timeout="20" 
   allowCustomSqlDatabase="false" 
   regenerateExpiredSessionId="true" 
   partitionResolverType="" 
   useHostingIdentity="true">
   <providers>
      <clear />
   </providers>
</sessionState>

Пример

В следующем примере демонстрируется, как задать параметры конфигурации состояния сеанса.

<sessionState
   mode="SQLServer"
   cookieless="true"
   sqlConnectionString=" Integrated Security=SSPI;data source=MySqlServer;"
   sqlCommandTimeout="10" />

Сведения об элементе

Обработчик раздела конфигурации

SessionStateSection

Член конфигурации

System.Web.SessionState

Настраиваемые расположения

Machine.config

Файл Web.config корневого уровня

Файл Web.config уровня приложения

Требования

Microsoft IIS версии 5.0, 5.1 или 6.0

.NET Framework версии 1.0, 1.1 или 2.0

Microsoft Visual Studio 2003 или Visual Studio 2005

См. также

Задачи

Практическое руководство. Настройка отдельных каталогов с помощью параметров расположения

Пошаговое руководство. Отключение параметров конфигурации ASP.NET

Ссылки

Элемент system.web (схема параметров ASP.NET)

Элемент providers для элемента sessionState (схема параметров ASP.NET)

Элемент configuration (схема общих параметров)

System.Configuration

System.Web.Configuration

SessionStateSection

System.Web.SessionState

Основные понятия

Олицетворение ASP.NET

Режимы состояний сеанса

Защита состояния сеанса

Иерархия и наследование файла конфигурации ASP.NET

Настройка обеспечения безопасности ASP.NET

Сценарии конфигурации ASP.NET

Другие ресурсы

Шифрование сведений о конфигурации с помощью функции защищенной конфигурации

Общие параметры конфигурации (ASP.NET)

Параметры конфигурации ASP.NET

Администрирование веб-сайта ASP.NET

Конфигурационный API-интерфейс настройки ASP.NET