2012-04-09 15 views
6

Как кеширование ASP.NET в IIS 7? Я знаю, что он хранится в памяти сервера, но какой процесс он управляет? Это адресное пространство w3wp.exe или его адрес в другом месте? И данные сеанса используют кеш, или сеанс работает по-разному?Расположение кэша ASP.NET

ответ

3

Вы настраиваете, где данные сеанса хранятся в вашем web.config с помощью sessionState element. Если установлено значение InProc, он будет сохранен в памяти в процессе w3wp.exe, который соответствует пулу приложений вашего приложения. Вы также можете хранить его в экземпляре SQL Server.

Если этот элемент не указан в вашем файле конфигурации, проверьте уровень машины web.config для вашей целевой версии/архитектуры.

+0

Вы правы, спасибо. Я также сделал свой собственный рытье (через Reflector) и придумал дополнительную информацию. Основной объект ASP.NET Cache (в конечном итоге) реализует себя как управляемый HashTable. Нет COM-вуду, которого я ожидал на полпути. Похоже, что все кэширование ASP.NET выполняется через управляемый код, т. Е. Все объекты кэша хранятся в адресном пространстве w3wp.exe. –

+0

Чтобы поддержать это, я всегда думал, что утилизация пула приложений выведет элементы из 'HttpContext.Cache'. Я не мог найти вспомогательную информацию, но это заставляет меня думать, что она хранится в памяти в соответствующем экземпляре 'w3wp.exe'. – wsanville

+0

Yup, вспомогательная информация заключается в том, что кеш хранится как HashTable (проверьте класс System.Web.Caching.CacheSingle). Нет неуправляемого кода. Теперь мы оба знаем. :) –