Необходимо изменить идентификатор сеанса до загрузки сеанса - PullRequest
2 голосов
/ 07 января 2010

Я пытаюсь использовать встроенную обработку сеансов .NET для совместного использования сеансов между несколькими приложениями ASP.NET. Я не могу использовать пользовательскую реализацию сеанса.

  • У меня есть несколько веб-серверов, каждый со своим именем хоста, настроенный для указания на одну и ту же кодовую базу
  • Я использую HttpModule, который устанавливает имя приложения вручную, поэтому, если запросы к разным серверам имеют одинаковый идентификатор сеанса, они будут использовать одни и те же данные сеанса

Теперь мне нужно иметь возможность установить идентификатор сеанса до первой загрузки сеанса - я могу настроить его для изменения cookie и перенаправления при первой загрузке, но я бы действительно предпочел сделать это без перенаправление.

ETA: Мы уже используем MS Session State Server для управления совместным использованием сеансов между серверами в пуле. Этот вопрос конкретно касается совместного использования сеансов между приложениями, то есть приложение в http://www.example.com и http://shopping.example.com должно иметь возможность совместно использовать одни и те же данные сеанса.

Ответы [ 2 ]

1 голос
/ 07 января 2010

Microsoft говорит, что перешла на внепроцессную модель для сеансов ASP.NET, что позволяет поддерживать совместное использование состояния сеанса из хранилища и его использование в фермах серверов.

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

Хранилище сеансов сервера состояний Windows

Вы можете использовать настройку StateServer ...

Пример web.config

<configuration>
  <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=SampleStateServer:42424"
      cookieless="false"
      timeout="20"/>
  </system.web>
</configuration>

Режим StateServer , в котором хранится сеанс состояние в отдельном процессе, называемом ASP.NET государственный сервис. Это обеспечивает это состояние сеанса сохраняется, если Веб-приложение перезапускается, а также делает состояние сеанса доступным для несколько веб-серверов в веб-ферме

Хранилище сеансов SQL Server

Если у вас есть резервная база данных SQL Server, вы можете выбрать SQLServer mode

Режим SQLServer сохраняет состояние сеанса в база данных SQL Server. Используя этот режим гарантирует, что состояние сеанса сохраняется, если веб-приложение перезапущен и также делает состояние сеанса доступно для нескольких веб-серверов в Веб-ферма.

Пример web.config

<configuration>
  <system.web>
    <sessionState mode="SQLServer"
      sqlConnectionString="Integrated Security=SSPI;data 
        source=SampleSqlServer;" />
  </system.web>
</configuration>

Есть и другие варианты. В этой статье MSDN содержатся указания о том, как в дальнейшем настроить такие варианты ...

0 голосов
/ 07 января 2010

Возможно, вам следует рассмотреть другой подход. Храните все данные, которые вам нужны для обмена в базе данных, к которой имеют доступ все ваши приложения ASP.NET

Сессия не должна быть общей для разных приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...