Сохранение данных сессии

Heimdall
Дата: 17.04.2007 14:57:00
Здравствуйте.
Написал первую программу на ASP.NET и столкнулся со следующей проблемой.
В моём приложении есть объект инкапсулирующий в себе 4 таблицы, датаадаптер и пару объектов-соединений к базам данных. В каждой сессии содержимое этого объекта уникально - пользователь формирует его (содержимое таблиц объекта) по шагам. Это вроде как программа в виде мастера.
Столкнулся с проблемой сохранения данных этого объекта.
Поначалу делал так Session["Имя переменной"] = переменная типа мой класс.
И всё вроде хорошо но потом я узнал что сессия может очищаться веб сервером когда угодно. У клиентов начались проблемы. Я сейчас в растерянности как и где хранить мой объект.Озадаченность
Я пробовал кидать переменную в кеш без признаков устаревания. Но почему то программа через некоторое время начинает жаловаться на отсутствие данныхРасстройство

Не подскажете что мне замутить? Какой подход нужен?
Dmitryk
Дата: 17.04.2007 15:06:35
Нужно хранить сессию вне процесса. Можете сессию хранить в базе или в стейт сервере. Это делается простой настройкой Web.config
 Бесплатный windows хостинг без баннера http://winhost.kiev.ua
voodoos
Дата: 17.04.2007 15:36:00
Столкнулся с проблемой сохранения данных этого объекта.
Поначалу делал так Session["Имя переменной"] = переменная типа мой класс.
И всё вроде хорошо но потом я узнал что сессия может очищаться веб сервером когда угодно.


А Вы не путаете с кешом?
Колекціонерові метеликів здається, що усі по вулиці із сачками ходять.
Лиман Артём
Дата: 17.04.2007 16:27:52

>И всё вроде хорошо но потом я узнал что сессия может очищаться веб сервером
>когда угодно
Впринципе - это неверно, не "когда угодно" , а при определённых условиях,
про которые желательно знать.

Данные сессии имеют тайм аут на время жизни (задаёца в web.config) + в
Win2k3 для app pool'а задаёца тайм аут на "Shutdown worker processes after
being idle for (time in minutes)" + есть определённые условия при которых
asp.net процесс может рестартнуть .
В большинстве случаев вполне достаточно использовать стандартную InProc
модель хранения состояния. Если есть проблемы - SQLServer и т.д.


>Я пробовал кидать переменную в кеш без признаков устаревания. Но почему то
>программа через некоторое время начинает жаловаться на отсутствие данных
если используешь асп 2.0, то будь в курсе, что у них там с Cache есть бага

________________________________________________
Never ask users what they want or they will tell you


Posted via ActualForum NNTP Server 1.4

Heimdall
Дата: 17.04.2007 17:59:00
Нужно хранить сессию вне процесса. Можете сессию хранить в базе или в стейт сервере. Это делается простой настройкой Web.config

А нужно ли мне помечать свой объект как сериализуемый в этом случае?
Heimdall
Дата: 17.04.2007 18:01:00
Столкнулся с проблемой сохранения данных этого объекта.
Поначалу делал так Session["Имя переменной"] = переменная типа мой класс.
И всё вроде хорошо но потом я узнал что сессия может очищаться веб сервером когда угодно.


А Вы не путаете с кешом?

Не путаю. Содержимое сессий может удаляться Web-сервером по таймауту или если в виртуальный каталог внесены изменения.Или если лимит памяти исчерпан.
Насчёт кеша я думал что он постоянно хранит данные пока пущено приложение.
Heimdall
Дата: 17.04.2007 18:05:00

>В большинстве случаев вполне достаточно использовать стандартную InProc
>модель хранения состояния. Если есть проблемы - SQLServer и т.д.

А что нужно сделать чтоб работала другая модель хранения состояния? Ну я понимаю что в web.config надо прописать её, настроить службу там какую то. Мой объект должен ещё помечаться как сериализуемый?
Этого достаточно?


>Я пробовал кидать переменную в кеш без признаков устаревания. Но почему то
>программа через некоторое время начинает жаловаться на отсутствие данных
если используешь асп 2.0, то будь в курсе, что у них там с Cache есть бага

Какая бага в Cache?
Лиман Артём
Дата: 17.04.2007 19:10:22

> ДПМЦЕО ЕЭЈ РПНЕЮБФШУС ЛБЛ УЕТЙБМЙЪХЕНЩК?
ДБ
> ьФПЗП ДПУФБФПЮОП?
ОЕФ, ДМС sql-ИТБОЕОЙС ОХЦОБ УППФЧ. ВБЪБ
http://support.microsoft.com/kb/311209

> лБЛБС ВБЗБ Ч Cache?

УУЩМЛХ МЕОШ ЙУЛБФШ, ЮФП ФП ФЙРБ "ЪОБЮЕОЙС НПЗХФ ЙУЮЕЪБФШ(ХДБМСГБ)
ОЕРТЕДУЛБЪХЕНП, РТЙЮЈН Ч РМПФШ ДП ФПЗП, ЮФП ВХЛЧБМШОП УТБЪХ РПУМЕ ЙИ
ДПВБЧМЕОЙС", МЕЮЙГБ ЧТПДЕ ЮЕТЕЪ CacheItemPriority.NotRemovable


________________________________________________
Never ask users what they want or they will tell you


Posted via ActualForum NNTP Server 1.4

RasimS
Дата: 17.04.2007 22:45:49
Heimdall
Здравствуйте.
Написал первую программу на ASP.NET и столкнулся со следующей проблемой.
В моём приложении есть объект инкапсулирующий в себе 4 таблицы, датаадаптер и пару объектов-соединений к базам данных. В каждой сессии содержимое этого объекта уникально - пользователь формирует его (содержимое таблиц объекта) по шагам. Это вроде как программа в виде мастера.
Столкнулся с проблемой сохранения данных этого объекта.
Поначалу делал так Session["Имя переменной"] = переменная типа мой класс.
И всё вроде хорошо но потом я узнал что сессия может очищаться веб сервером когда угодно. У клиентов начались проблемы. Я сейчас в растерянности как и где хранить мой объект.
Я пробовал кидать переменную в кеш без признаков устаревания. Но почему то программа через некоторое время начинает жаловаться на отсутствие данных

Не подскажете что мне замутить? Какой подход нужен?

Вот тут почитай http://www.gotdotnet.ru/LearnDotNet/ASPNET/401619.aspx
voodoos
Дата: 24.04.2007 13:21:00
Столкнулся с проблемой сохранения данных этого объекта.
Поначалу делал так Session["Имя переменной"] = переменная типа мой класс.
И всё вроде хорошо но потом я узнал что сессия может очищаться веб сервером когда угодно.


А Вы не путаете с кешом?

Не путаю. Содержимое сессий может удаляться Web-сервером по таймауту или если в виртуальный каталог внесены изменения.Или если лимит памяти исчерпан.
Насчёт кеша я думал что он постоянно хранит данные пока пущено приложение.


Да, но Вы ж писали про "когда угодно", а когда угодно данные сессии не удаляються, а вот кеш может исчеснуть сам по себе.

В общем, при таймауту или переписи длл или при пересохранении веб-конфига сессии всё сбрасываются, потому как перестартовывает вообще всё приложение. Сбрасывается вообще всё.
Колекціонерові метеликів здається, що усі по вулиці із сачками ходять.