3

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

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

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

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

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

[1] --- 页面缓存后conext.session为空

4

2 回答 2

1

来自同一个博客。

回复:提示/技巧:使用 ASP.NET 2.0 输出缓存替换功能实现“甜甜圈缓存”

2007 年 2 月 23 日,星期五,凌晨 1:30,作者:ScottGu

嗨斯科特,

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

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

对不起!

斯科特

于 2009-11-11T15:23:33.150 回答
0

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

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

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

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

于 2009-11-11T10:03:03.260 回答