2009-11-11 49 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

斯科特嗨,

我認爲你看到的錯誤是因爲你試圖訪問會話對象。

不幸的是,我不認爲你可以在這種情況下訪問會話 - 自會話對象不會被填充(由於從未創建的頁面)。

對不起!

斯科特

相關問題