2009-11-11 5 views
3

Похоже, что контекстный параметр asp: net подстановочный метод управления пропускает текущий сеанс после вывода страницы в кеш.Есть ли способ получить доступ к текущей сессии изнутри элемента управления замещением?

Помимо получения содержимого элемента управления замещением через ajax или с помощью какого-либо другого метода хранения данных, которые в противном случае были бы в сеансе (например, базы данных), есть ли что-нибудь еще, что я могу сделать?

Есть ли обходной путь для использования родной сессии asp.net в управлении замещением?

<asp:Substitution ID="myid" MethodName="method1"></asp:Substitution> 

public static string method1(HttpContext context) <-- [1] 

[1] --- conext.session является недействительным после страница кэшируется

+0

Сессия недоступна (как вы отметили в своем ответе ниже, что правильно - вы должны пометить его Ответил). Однако 'context.User.Identity' (при условии, что вы используете поставщик членства) _is_, поэтому вы можете получить от него базовое имя пользователя или идентификатор; то вы можете загрузить соответствующие данные сеанса. Но только если вы храните его в доступном месте, например, в базе данных, которая может использовать имя пользователя в качестве ключевого слова. Но если у вас есть динамически сгенерированные данные, которые вы сохраняете в сеансе, но не где-либо еще, тогда он не будет доступен. –

ответ

0

Что произойдет, если вы убедитесь, что context.Session не является нулевым, прежде чем получить доступ к значению? Раньше у меня были проблемы с сеансом, а не при использовании элемента управления Substitution, потому что Context.Session не установлен для первого запроса, который пользователь делает. У вас может возникнуть связанная с этим проблема, так как она не будет находиться в стандартном жизненном цикле страницы.

Согласно ScottGu, все должно быть доступно.

Этот статический метод будет передан объект HttpContext во время выполнения, который содержит стандартный запрос ASP.NET, Response, пользователя, сервер, Session, Application, встроенные функции и которые затем можно использовать ...

Tip/Trick: Implement "Donut Caching" with the ASP.NET 2.0 Output Cache Substitution Feature

+1

[Эта страница] (http://forums.asp.net/p/1384173/2939887.aspx), похоже, решает ту же проблему, связанную с той же информацией из этой статьи. Однако кажется, что, поскольку запросы подстановки находятся за пределами жизненного цикла страницы, у вас не будет доступа к сеансу. Не могли бы вы захватить информацию из кеша или объекта пользователя? – toxaq

1

Из того же блога.

Re: Совет/Trick: Реализовать "пончик Caching" с ASP.NET 2.0 Output Cache Замены Feature

пятницу, 23 февраля, 2007 1:30 AM по ScottGu

Привет Скотт,

Я думаю, что ошибка, которую вы видите, связана с тем, что вы пытаетесь получить доступ к объекту сеанса.

К сожалению, я не думаю, что вы можете получить доступ к сеансу в этом сценарии - поскольку объект сеанса никогда не заполняется (поскольку страница никогда не создается).

Извините!

Скотт

 Смежные вопросы

  • Нет связанных вопросов^_^