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

Обновлен: Ноябрь 2007

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

Элемент configuration (схема общих параметров)
  Элемент system.web (схема параметров ASP.NET)
    Элемент 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]"
    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">
    <providers>...</providers>
</sessionState>

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

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

Атрибуты

Атрибут

Описание

allowCustomSqlDatabase

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

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

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

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

cookieless

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

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

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

h6bb9cz9.alert_note(ru-ru,VS.90).gifПримечание.
При настройке веб-узла 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.

sqlCommandTimeout

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

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

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

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

sqlConnectionString

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

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

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

sqlConnectionString="Data Source=.\SQLServer2005;Initial Catalog=SessionState;Integrated Security=SSPI;"
h6bb9cz9.alert_note(ru-ru,VS.90).gifПримечание.
Для большей безопасности приложения при использовании режима 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. Дополнительные сведения см. в разделе Режимы состояний сеанса.

h6bb9cz9.alert_note(ru-ru,VS.90).gifПримечание.
Для большей безопасности приложения при использовании режима 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.

h6bb9cz9.alert_note(ru-ru,VS.90).gifПримечание.
В .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;".

    h6bb9cz9.alert_note(ru-ru,VS.90).gifПримечание.

    Чтобы выполнить эти шаги, можно использовать 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

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

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

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

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

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

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

Сценарии конфигурации 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

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