2012-05-30 1 views
1

Я следую указанию здесь How to configure SQL Server to manage ASP.NET sessions для создания ASPState db. У меня есть 2 веб-приложения в IIS 7. В настройке веб-приложения IIS я перехожу в «состояние сеанса» и устанавливаю состояние сеанса как «SQL Server» и предоставляю строку подключения. В каждом web.config веб-приложений, я добавитьSQL Server для управления сессиями ASP.NET не работает

<sessionState 
     mode="SQLServer" 
     allowCustomSqlDatabase="false" 
     sqlConnectionString="data source=server;user id=user;password=password" 
     cookieless="false" 
     timeout="7200" 
/> 

я создаю сессию,

Session["Data"] = "test" 

в Web App A и перейдите к веб-приложения B в том же браузере, чтобы распечатать его

Response.Write(Session["Data"]); 

Это показывает НИЧЕГО. Я вижу, что в таблице есть данные: ASPStateTempApplications и ASPStateTempSessions в базе данных ASPState. Кроме того, я не вижу ошибок в журнале событий. Может ли кто-нибудь подумать, что я могу сделать неправильно?

Спасибо!

+0

Доступ к обоим приложениям с тем же доменным именем? –

+0

Да, это на локальном хосте. Это http: // localhost: 8080/WebApp_A и http: // localhost: 8080/WebApp_B – windforceus

+0

@windforceus Теперь поймите, вы попробуйте приложение A, чтобы получить его в приложении B. Это невозможно! – Aristos

ответ

2
You can not get session that belongs to App-A from App-B and vice versa. 

Сессии связаны с куки-файлами, а файлы cookie отличаются от приложений-a и app-b, создаются случайным образом. Даже если установить, как одни и те же файлы cookie затем следуют, база данных соединяет сеанс с идентификатором приложения, который также отличается для каждого приложения.

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

Единственный возможный способ архивирования, который заключается в создании вашего пользовательского кода сеанса, а некоторые знают, что вы используете то же самое для приложений-A и app-B, чтобы связать их вместе.

+0

Привет, Aritos, вам нужно настроить настройку IIS для веб-приложения? Мне нужно сделать этот шаг -> (В IIS перейдите в настройку веб-приложения, перейдите в «Состояние сеанса» и установите состояние сеанса как «SQL Server» и укажите строку подключения.) – windforceus

+0

Я делаю это и до сих пор не получаю данные. Я вижу, что дата истечения срока действия изменяется в таблице ASPStateTempSessions, когда я просматриваю веб-страницу, но я не смог получить данные сеанса. – windforceus

+0

Привет, Аристос, звучит сложно. Таким образом, нет хорошего способа для нескольких веб-приложений совместно использовать один и тот же сеанс на одном сервере? Причина, по которой я использую состояние сеанса, заключается в том, что несколько веб-приложений используют один и тот же сеанс, такой как логин в Web A, и продолжают просматривать в Web B без входа в систему. – windforceus