Как получить доступ к одному сеансу из разных мест? - PullRequest
0 голосов
/ 09 мая 2011

У меня есть представление, которое использует

Session["Something"] = 1;

И у меня есть класс внутри проекта библиотеки классов, который пытается получить это значение из сеанса, используя

HttpContext.Current.Session["Something"]

Но этоretuns null.

public ActionResult Index()
{
    Session["Something"] = 1;
    var fromLib = (new MyLibClass()).GetSession("Something"); // null
    var fromHere = Session["Something"]; // 1
}

// Class library project
public object GetSession(string key)
{
    return HttpContext.Current.Session[key];
}

Как получить значение из сеанса?Или есть способ сохранить значение и получить его в другом месте (без базы данных или системных файлов)

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Есть две сессии

Session (refers to the view session)
HttpContext.Current.Session (refers to context session)

Использование HttpContext.Current.Session везде работает, поскольку они одинаковы. Я создал класс, чтобы помочь мне получить доступ к значениям сеанса так, как я хочу, поэтому я могу просто вызывать его, не беспокоясь о правильном сеансе.

1 голос
/ 09 мая 2011

Вам не нужен Session объект.

Хотя Session подходит для хранения переменных внутри приложения asp.net, вы можете реализовать свой собственный объект сеанса для использования внутри своих библиотек классов, который является легким и быстрым и внутренним для вашего кода:

Dictionary<string, object> MySession = new Dictionary<string, object>();
MySession.Add("VariableName", myObject);
MyLib.Pass(MySession);

Постарайтесь сделать его более конкретным, если это возможно, т.е. если вы просто передадите MyClass в свою библиотеку, то:

Dictionary<string, MyClass> MySession = new Dictionary<string, MyClass>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...