2010-10-22 2 views
0

Хорошо, я уверен, что это довольно очевидно. Но когда вы говорите, что состояние сеанса сохраняется на «сервере» в памяти, мы говорим об IIS или что? Когда я думаю о состоянии сеанса на стороне сервера, я думаю, что память с точки зрения пулов приложений IIS и т. Д. Я что-то скрываю или ничего не вижу?Состояние сеанса (на стороне сервера)

http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx

термин "сервер" может означать многое. Конечно, это «серверная», но какой конкретный процесс/память/область/приложение на сервере мы говорим (только для IIS?)?

Я хочу, чтобы MS объяснила, что они означают, потому что это довольно относительная.

В частности, это «магазин на сервере»

Storing Data on the Server (in memory) 

• Session state 
• Application state 
• Profile Properties 

так «на сервере», где в памяти и какой процесс/приложение обрабатывает каждый из них?

+0

Я не получаю то, что хочу от этой проблемы, потому что мой вопрос слишком общий. Вот один пример с этой страницы ... В процессе o \t Когда следующий пользователь приходит на запрос страницы, создается новый объект Session для пользователь – PositiveGuy

+0

Хорошо, так что управляет этим объектом IIS? – PositiveGuy

+0

Вопрос был обновлен, чтобы быть более конкретным и понятным – PositiveGuy

ответ

4

«Конечно, это» сервер -side ", но какой конкретный процесс/память/область/приложение на сервере мы говорим (только для IIS?)»

Каждый сайт работает в пуле приложений и каждого приложения в основном процесс на вашем веб-сервере. Если сеанс настроен быть в процессе, ваши объекты сеанса будут сохранены в этом процессе памяти

+0

Да, это то, что я предполагал. Пул рабочих процессов/приложений. У каждого пула приложений есть рабочий процесс, который я считаю ... но мне нужно это проверить. – PositiveGuy

+0

Это правильно, но если ваш на 32-битный os, который позволяет только около 600 мб кучи. Рабочий процесс также перезапускается каждые 29 часов, очищая память - вы не должны использовать состояние сеанса inproc, если вам нужно обеспечить его и не потерять (зависит от приложения) –

4

Это зависит. По умолчанию он находится в памяти рабочего процесса, но может быть на выделенном государственном сервере или в SQL или на вашем собственном пользовательском провайдере.


От MSDN:

ASP.NET состояние сеанса поддерживает несколько различных вариантов для хранения данных сессии. Каждый параметр идентифицируется значением в перечислении SessionStateMode. В следующем списке описаны доступные режимы состояния сеанса:

  • InProc режим, в котором хранится состояние сеанса в памяти на веб-сервере. Это значение по умолчанию.

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

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

  • Пользовательский режим, который позволяет указать пользовательского поставщика хранилища.

  • Режим выключения, который отключает состояние сеанса.

+0

Хорошо, что рабочий процесс является частью IIS, я считаю. – PositiveGuy

+0

не был ответьте на мой вопрос. Я спросил, какой процесс и какая память на сервере. – PositiveGuy

+0

@CoffeeAddict - ответ на ваш вопрос - это второе предложение моего ответа «По умолчанию оно находится в памяти рабочего процесса». В ответ на ваш комментарий по Дастину каждый пул приложений имеет один рабочий процесс. Если вы посмотрите в своем диспетчере задач, вы увидите распределения, которые происходят в w3wp.exe для пулов приложений IIS 7. – jball

0

ASP.NET - это всего лишь каркас; это набор классов, и они выполняют код. Именно этот код предоставляет вам состояние сеанса и хранит информацию о вашем состоянии сеанса в некоторых объектах, точно так же, как словарь или аналогичный.

(При выполнении в Proc, то есть состояние сервера, SQL Server и обычаи, где обычай может быть что угодно, до тех пор, как кто-то написал код, реализующий нужные интерфейсы)

Смежные вопросы