看起来asp:net替换控制方法的上下文参数在页面输出缓存后缺少当前会话。
除了通过ajax获取替换控件的内容或使用其他方法来存储原本会在会话中的数据(如数据库),还有什么我可以做的吗?
是否有替代控制中使用本机asp.net会话的解决方法?
<asp:Substitution ID="myid" MethodName="method1"></asp:Substitution>
public static string method1(HttpContext context) <-- [1]
[1] ---在缓存页面后,conext.session为null
答案 0 :(得分:1)
来自同一篇博客。
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