ASP.NET Session Scope: откуда он доступен? - PullRequest
2 голосов
/ 28 октября 2008

Это кажется тривиальным, но мне никогда не приходилось беспокоиться об этом раньше, и мои навыки Google подводят меня. Насколько далеко простирается внутрипроцессное ведение сеанса для ASP.NET/IIS6 в том смысле, что вы можете вызвать Session [«что угодно»] и получить то же значение обратно? Очевидно, что он не может распространяться на разные серверы или пулы приложений (я думаю). А как насчет разных веб-сайтов в одном пуле приложений? Могут ли эти двое увидеть переменные сеанса друг друга для пользователя? А как насчет двух разных виртуальных каталогов, каждый со своим web.config?

Спасибо!

Ответы [ 5 ]

2 голосов
/ 31 октября 2008

AFAIK сеанс в процессе имеет область действия AppDomain, поэтому нет, два веб-приложения, работающие в одном пуле, не могут совместно использовать сеанс в процессе. На самом деле название «in-AppDomain» будет более подходящим.

1 голос
/ 28 октября 2008

Очевидно, что он не может распространяться на разные серверы

Конечно, вы можете. Эта статья MSDN содержит более подробную информацию.

0 голосов
/ 30 октября 2008

Если вы хотите поделиться сессией между приложениями с бэкэндом SQL Server, есть статья о том, как это сделать.

0 голосов
/ 28 октября 2008

Похоже, вам лучше хранить значение базы данных, чем хранить его в сеансе In-Proc [""]. Если у вас есть сервер состояний, то сеанс может быть доступен на всех машинах, которые используют один и тот же сервер состояний. In-Proc это только то, что он говорит. Он хранится в процессе этого одного компьютера.

0 голосов
/ 28 октября 2008

Может распространяться на серверы фермы, если сеанс asp.net хранится в базе данных.

По соображениям безопасности периметр сеанса строго находится в одном домене приложения.

...