Совместное использование session и sessionID через поддомен (MVC 3) - PullRequest
0 голосов
/ 05 августа 2011

Я отчаянно пытался найти решение для этих двух дней, но все треки не были окончательными.

У меня есть веб-сайт с поддоменами, такими как A.mysite.com и B.mysite.com, И мне нужно разделить сеанс между всем поддоменом и доменом.

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

Любые идеи будут по достоинству оценены.

1 Ответ

0 голосов
/ 05 августа 2011

Для этого вы можете использовать сборку в средствах Session State Server.

Это позволяет вам направлять веб-сайты на базу данных сервера sql, чтобы сохранить состояние сеанса в отличие от памяти. Все серверы могут беспрепятственно использовать один и тот же объект для ваших веб-сайтов, используя сеанс, как вы это делаете обычно.

Существует только изменение файла web.config и использование инструмента aspnet_regsql.exe для настройки базы данных.


Чтобы настроить базу данных с помощью aspnet_regsql.exe, аргументы командной строки следующие:

-S Указывает IP-адрес или имя сервера SQL, на котором вы хотите сохранить состояние сеанса.

-U Указывает идентификатор пользователя, который будет использоваться при подключении к SQL Server

-P Указывает пароль, который будет использоваться при подключении к SQL Server

-E Указывает, что вы хотите использовать встроенную защиту при подключении к SQL Server

-ssadd Добавляет поддержку состояния сеанса режима SQLServer

-ssremove Удаляет поддержку состояния сеанса режима SQLServer

-sstype Тип поддержки состояния сеанса. Эта опция может быть:

т для временного хранения

p для постоянного хранения

c для нестандартного хранения

-d Имя настраиваемой базы данных для использования, если ключ -sstype имеет значение "c"

Вы бы обновили файл web.config со следующим синтаксисом:

<sessionState 
        mode="SQLServer"
        sqlConnectionString="data source=MyDbServer;user id=<username>;password=<strongpassword>"
        cookieless="false" 
        timeout="20" 
/>

Вот пара хороших статей о том, как этого добиться.

http://idunno.org/articles/277.aspx

http://support.microsoft.com/kb/317604

http://www.developer.com/net/asp/article.php/3595766/Storing-Session-State-in-a-SQL-Server-Database.htm

Поскольку ваша основная проблема заключается в том, чтобы гарантировать, что SessionID одинаков в обоих поддоменах, я думаю, что вы здесь - глобальное событие Application_PreRequestHandlerExecute. Вы можете проверить наличие файла cookie сеанса из субдомена A и установить идентификатор в субдомене для B на тот же идентификатор. Смотрите пост здесь; http://www.know24.net/blog/ASPNET+Session+State+Cookies+And+Subdomains.aspx

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