Проблема с сессией? - PullRequest
       31

Проблема с сессией?

0 голосов
/ 25 августа 2009

У меня есть приложение MVC, которое прерывает сеанс через 20 минут. Я храню некоторые значения для раскрывающегося списка в переменной Session. Если пользователь разрешает странице тайм-аут, а затем обновляет страницу, у меня нет значений в раскрывающемся списке.

Как лучше всего с этим справиться?

Ответы [ 4 ]

0 голосов
/ 25 июля 2013

Вы можете попытаться использовать кэш InMemory вместо Session (если действительно необходимо где-то хранить его и не получать из базы данных). Вам нужно просто указать ключ (для каждого списка дд) и срок действия

using System.Runtime.Caching;

        public static dynamic Get(string key)
        {
                ObjectCache cache = MemoryCache.Default;
                var item = cache.Get(key);
                return item;
        }

        public static void Put(string key, dynamic ddResult)
        {
                CacheItemPolicy policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(1); // expiration in one minute
                ObjectCache cache = MemoryCache.Default;
                cache.Set(key, ddResult, policy);
        }
0 голосов
/ 25 августа 2009

Я предполагаю, что раскрывающиеся данные взяты из базы данных. Если это так, вам нужно будет перенаселить сессию. Я предполагаю, что вы используете аутентификацию Windows - в противном случае, скажем, если вы используете аутентификацию на основе форм, вам также придется заставить пользователя снова войти в систему, перенаправив на страницу входа.

Если раскрывающиеся данные не из базы данных, вы можете сохранить их в Web.config и обновить их оттуда.

Как именно вы справляетесь с этим, зависит от особенностей, которые вы не упомянули. Например, в некоторых моих проектах было достаточно проверить, существует ли переменная сеанса (при каждом доступе к странице, не относящейся к публикации), и, если она отсутствует, повторно заполнить сеанс этой информацией.

0 голосов
/ 25 августа 2009

Могу ли я узнать, является ли это приложение Windows или веб-приложение в веб-приложении, если вы собираетесь использовать базу данных в качестве источника для отображения данных в раскрывающемся списке, который мы задаем как:

DropDownList3.DataSource = Class2.details().Tables[0];
DropDownList3.DataBind();

Здесь Class2 - это класс с именем функции, называемой details, в котором у нас будет SQL-запрос для отображения данных из базы данных в раскрывающемся списке (SELECT запрос).

Затем мы будем использовать данные этого выпадающего списка в сеансе как

session["anyname"]=dropdownlist3.selecteditem.text;

Тогда, по вашему мнению, мы можем также указать значения времени ожидания в файле web.config.

0 голосов
/ 25 августа 2009

Сохранение информации в какой-либо форме хранения, например База данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...