有没有办法从替换控件中访问当前会话?

时间:2009-11-11 03:29:03

标签: c# asp.net session substitution donut-caching

看起来asp:net替换控制方法的上下文参数在页面输出缓存后缺少当前会话。

除了通过ajax获取替换控件的内容或使用其他方法来存储原本会在会话中的数据(如数据库),还有什么我可以做的吗?

是否有替代控制中使用本机asp.net会话的解决方法?

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

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

[1] ---在缓存页面后,conext.session为null

2 个答案:

答案 0 :(得分:1)

来自同一篇博客。

re:提示/技巧:使用ASP.NET 2.0输出缓存替换功能实现“Donut Caching”

2007年2月23日星期五凌晨1:30由ScottGu

嗨斯科特,

我认为您看到的错误是因为您正在尝试访问会话对象。

不幸的是,我不认为您可以在这种情况下访问会话 - 因为会话对象永远不会填充(因为永远不会创建页面)。

抱歉!

斯科特

答案 1 :(得分:0)

如果在访问值之前确保context.Session不为null,会发生什么?我之前遇到过会话问题,而不是在使用Substitution控件时,因为没有为用户发出的第一个请求设置Context.Session。您可能遇到相关问题,因为它不会处于标准页面生命周期中。

根据ScottGu的说法,一切都应该可用。

这个静态方法将在运行时传递一个HttpContext对象,该对象包含标准的ASP.NET请求,响应,用户,服务器,会话,应用程序内在函数,然后您可以使用它...

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