asp.net mvc - нужно хранить некоторые данные для текущего запроса - PullRequest
19 голосов
/ 15 февраля 2009

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

как:

 public static User Current() {
     if (Session["current-user"] == null) {
          Session["current-user"] = GetUserFromDB(); // example function, not real
     }
     return (User)Session["current-user"];

затем в запросе app_end:

     Session.Clear();

Ответы [ 2 ]

36 голосов
/ 15 февраля 2009
HttpContext.Items["user"] = user;

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

8 голосов
/ 15 февраля 2009

Используйте класс HttpContext. Вы можете получить к нему либо в контексте контроллера HttpContext.Current.

Коллекция HttpContext.Items - это то, что вы хотите использовать.

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