Я знаю это в общественном сервере <sessionState mode="Off" />
что означает, что Вы не можете использовать Сессии, и несколько лет назад я помню, что работал над веб-сайтом, где нам не разрешили использовать сессии.
В моей точке зрения сессии являются очень полезным инструментом, если мы справились, как использовать правильный путь, но используем переменную сеанса в веб-сайте, что-то плохо, когда его плохое и когда его нет?
Обновление
И Что мы можем использовать вместо этого для предотвращения его путаницы?
Сессии не плохи сами по себе. Но ими также не следует злоупотреблять. Вы должны особенно избегать "О, мне нужен этот кусок информации здесь и здесь, давайте сохраним его в сессии и используем его позже".
Вместо того, чтобы сделать правильный ОО дизайн, где информация передается правильно в параметрах, сессия используется как глобальное неорганизованное хранилище - что приводит к потенциальному беспорядку.
Такое глобальное состояние также препятствует тестируемости. Большая неорганизованная сессия также приводит к увеличению использования памяти. Альтернативой состоянию сессии может быть состояние представления, например.
(Я не знаю, говорите ли вы о состоянии сессии, или о концепции сессии в целом. Если о последнем, то мой ответ не совсем уместен)
.Один из Основная причина, по которой вы не хотите использовать сеансы в производственной среде, заключается в том, что идентификатор сеанса передается через файлы cookie (по крайней мере, в JSP). И вы не можете гарантировать, что у вашего клиента файлы cookie будут включены постоянно. Поэтому, даже если вы действительно используете сеанс, рекомендуется также реализовать перезапись URL-адресов. В результате контейнер будет использовать сеанс, а также перезапись URL-адреса для самого первого запроса (чтобы определить, включены ли файлы cookie). И он будет использовать сеанс, если клиент принимает файлы cookie. В противном случае это превратилось бы в перезапись URL.
Обратите внимание, что при использовании перезаписи URL вы должны убедиться, что в ответе есть закодированный URL. Кроме того, если вы используете сеанс, вам придется принимать во внимание странные события, такие как отслеживание сеанса, для более чем одного браузера в одной системе.
Иногда состояние сессии, просто существующее, убивает производительность. Серьезно, если поместить туда одно булево значение, это может убить производительность в некоторых случаях. Вот конкретный пример:
У вас есть страница приборной панели, и на ней расположено несколько маленьких модулей, каждый из которых загружает свое содержимое через ajax. Если вы используете сессию, вы можете загрузить только один модуль за раз, потому что сессия блокируется (для каждого пользователя) во время запроса. Если сессия не используется, блокировки нет, и браузер сможет запросить максимальное количество ресурсов (4 или более одновременно).
См. "Concurrent Requests and Session State" здесь:
http://msdn.microsoft.com/en-us/library/ms178581.aspx
Если вы столкнулись с этим, либо не используйте сессию, либо установите ее в режим только для чтения (это трудно сделать в ASP.NET MVC, насколько я знаю).
Обновление: Еще два реальных сценария, в которых это может произойти:
Это интересный вопрос, и я согласен, что сессии могут быть очень грязными, если их неправильно использовать. Один из подходов к решению этой проблемы заключается в том, чтобы весь сложный объект (например, содержимое корзины магазина) хранился в одной сессии, а не в нескольких сессиях, разбросанных по одному веб-приложению. Сессии можно хранить в базе данных SQL Server на случай, скажем, отключения электричества.
Вы также не хотите использовать сессии для хранения частной информации. Это похоже на то, как люди пытаются хранить пароли непосредственно в cookies, что также нежелательно.
Люди все еще боятся принимать cookies, которые необходимы для использования сеансов. Кроме того, существуют проблемы безопасности.
Сессии истекают это волатильно, так что может случиться, что сессии выйдут по времени и тому подобное, так что это минус