我們正在使用的WebFarm不支持Session。我們需要在重定向期間傳遞數據。如何在沒有TempData字典的情況下執行此操作,因爲TempData使用Session內部。ASP.Net MVC - TempData會話問題
4
A
回答
3
您可以編寫自己的TempData提供程序並將其存儲在Cookie中。請參閱ASP.NET MVC Store TempData in Cookie或者您可以擁有一個基類控制器,該控制器查找隱藏的輸入並保存對象/狀態並將其持久保存到每個http請求。
請注意,TempData僅在兩個控制器操作之間持續存在。
編輯:
你可以用同樣的例子,寫序列化到一個數據庫提供商......或者......甚至到磁盤。拍攝,就此而言,你甚至可以推出一個完整的自定義替換Session。您將創建一個會話工廠類,並通過某個靜態集合中的一個鍵存儲您的自定義會話對象。然後你可以通過cookies或隱藏的輸入來跟蹤會話密鑰,如上所述。
0
這是一個非常非常有用的問題,在MVC中瞭解更多。儘管我得到了一些問題,比如微軟認爲人們會知道TempData使用會話。
我上傳超過4kb的對象時出現問題。爲此,我們的建築師建議拆分該對象並將它們保存在Cookie中的塊中。我使用下面的博客代碼來分割對象的序列化字符串。
http://lukencode.com/2010/04/21/split-string-into-array-of-chunks/
所以在SaveTempData方法拆分的cookie,並將它們收集到LoadTempData一個字符串。這就解決了問題。
但我使用像NVElocity這樣的分佈式緩存技術總是更好。
0
創建一個類,它看起來像這樣:
public class GlobalStorage
{
public static Dictionary<string, object> Device = new Dictionary<string, object>();
}
商店:
GlobalStorage.Device.Add("myKey", mydata);
檢索:
string mydata = GlobalStorage.Device["myKey"].ToString();
相關問題
- 1. ASP.NET MVC會話超時和TempData
- 2. 在ASP.NET MVC中,爲什麼會話時TempData不會持久?
- 3. ASP.Net中的會話超時問題MVC
- 4. DotNetOpenAuth ASP.NET MVC 3會話問題
- 5. ASP.NET MVC中的會話過期問題
- 6. ASP.NET會話問題
- 7. ASP.Net會話問題
- 8. ASP.NET會話問題
- 9. asp.net - 會話問題
- 10. ASP.NET MVC ViewBag或TempData?
- 11. asp.net會話超時問題
- 12. 在ExecuteResult中訪問TempData Asp.Net MVC Core
- 13. ASP.NET MVC會話
- 14. ASP.NET會話狀態問題
- 15. ASP.Net會話超時問題
- 16. 嚴重會話問題ASP.NET
- 17. 會話問題與asp.net
- 18. ASP.Net會話狀態問題
- 19. Asp.net MVC 2.0 TempData過期
- 20. ASP.NET MVC ViewBag/TempData安全
- 21. ASP.NET MVC和jQuery與TempData
- 22. 問題TempData和假的HttpContext使用ASP.NET MVC
- 23. 爲什麼TempData支持的會話
- 24. ASP.NET MVC 5會話
- 25. 相當於ASP.NET中的ASP.NET MVC TempData
- 26. 會話問題?
- 27. 如何在asp.net MVC中的外部JavaScript文件中獲取會話值,tempdata?
- 28. 長期使用和會話/ TempData的
- 29. ASP.NET MVC項目體系結構問題 - 授權和會話
- 30. 在asp.net中禁用cookie時會話問題mvc
這是一個很好solution.But如果我的對象大小是巨大的,然後它將是一個問題。 Cookies允許最大大小爲4 kb。在這種情況下,您能否給出一個好的解決方案?我們可以像緩存提供者一樣使用Velocity嗎? – Thanigainathan 2011-02-08 16:46:38