2009-11-11 36 views
3

看起来像ASP的上下文参数:净替代控制方法缺少当前会话一旦页面输出缓存。有没有办法从替代控件中访问当前会话?

除了获得直通AJAX替代控制的内容或使用其他一些方法来存储,否则将在会议上(如数据库)的数据有什么我可以做什么?

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

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

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

[1] ---页缓存

+0

会话是不可用(如下面的答案,这是正确的注意 - 你应该将其标记回答)。然而'context.User.Identity'(假设你使用一个Membership提供者)_is_可用,所以你可以从中获得基本的用户名或ID;那么你可以加载适当的Session数据。但只有当你将它存储在可访问的地方,如可以使用用户名作为查找键的数据库时。但是,如果您已将动态生成的数据保存在会话中但不在其他任何地方,那么它将无法访问。 – 2011-10-19 17:34:42

回答

0

,如果你确保context.Session不是访问前值空会怎么样conext.session为空?我以前遇到过会话问题,而不是使用替换控件时,因为Context.Session没有为用户的第一个请求设置。您可能会遇到相关问题,因为它不属于标准页面生命周期。

根据ScottGu一切都应该是可用的。

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

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 2009-11-11 23:33:58

1

来自同一个博客。

重:技巧/诀窍:用ScottGu实施 “甜甜圈缓存” 与ASP.NET 2.0输出缓存替换功能

周五,2007年2月23日上午1:30

斯科特嗨,

我认为你看到的错误是因为你试图访问会话对象。

不幸的是,我不认为你可以在这种情况下访问会话 - 自会话对象不会被填充(由于从未创建的页面)。

对不起!

斯科特

相关问题