ASP.NET может хранить всю объединенную информацию о сеансе для приложения («состояние сеанса») в 3 возможных местах на стороне сервера (файлы cookie клиента также возможны, но это другая история):
- «InProc» (в процессе), что означает в памяти на сервере IIS, подключенном к рабочему процессу asp.net,
- «StateServer», который представляет собой отдельный процесс, к которому могут обращаться несколько серверов IIS, но по-прежнему сохраняет состояние сеанса в памяти, и
- «SQLServer», который хранит состояние сеанса в базе данных SQL Server.
1) Причина, по которой In-process не масштабируется, заключается в том, что если ваши потребности превышают емкость одного сервера IIS, несколько серверов не могут использовать состояние сеанса In-process. Если вы определили, что общий хостинг удовлетворит ваши потребности, вам не нужно об этом беспокоиться.
2) Когда вы сохраняете что-то в Session["Name"]
, ASP.net сохраняет эти данные везде, где приложение настроено для хранения состояния сеанса. Если вы хотите изменить место хранения состояния сеанса, все, что вам нужно сделать, это настроить файл web.config. Если вы используете среду общего хостинга, ваше развертывание IIS считается одним сервером, хотя, несомненно, фактические серверы находятся в какой-то ферме.
См .: Режимы состояния сеанса MSDN