我想知道在.NET環境中是否有有效的會話或靜態。 我需要的是一個變量,用於存儲一些保存其值的數據,可通過所有ASP.NET頁面/ C#表格訪問,但對於使用應用程序的所有用戶不是唯一的。替代會話/靜態變量ASP.NET/C#
回答
您可能會暴露一個類爲靜態的更多細節。這將使其在所有會話中都可用,但僅限於該應用程序實例。
-1,因爲這基本上描述了一個反模式 –
這是你的先知,並隨時這樣做。我自己的個人標準是,降薪可能適用於不明確或無用的答案,而不是因爲方法上的個人偏好 - 而且在一天結束時,模式只是另一種工具(根據我自己的經驗常常被濫用),以根據情況上班或不上班。具體到OP的情況,Static類將涵蓋他的需求,並且具有最少數量的「移動部分」 - 因此是有用的。 – OnoSendai
您可以嘗試使用應用程序範圍的變量來處理此問題。
首先在Global.asax文件,添加以下內容:
void Application_Start(object sender, EventArgs e)
{
[Other Stuff Already Here Omitted]
Application["MyVariable"] = "My Default value";
}
然後任何頁面上,你可以訪問此:
var myVar = Application["MyVariable"];
我認爲你正在尋找應用程序狀態,而比應用程序緩存。 應用程序狀態的工作方式與會話狀態相同,但會在所有會話之間共享。
使用範例:
Application["Message"] = "Welcome to my Website";
的更多信息: http://www.codeproject.com/Articles/87316/A-walkthrough-to-Application-State
不回答這個問題,因爲op特別提到winforms –
這個問題提到ASP.NET,它上面也有ASP.NET標籤 –
是的,你的答案是正確的。然而,op提到了c#表單,可能是winforms。 Win表單無權訪問您描述的工具集 –
答案是否定的。該級別上不存在「.Net環境」。您的.Net代碼也會從主機獲取運行時限制。 讓我們定義兩個主機(還有更多): IIS和「簡單的主要exe」。
對於IIS託管代碼,您正在主機創建線程(或分配一個線程)並在此線程上執行代碼的環境中運行。主機本身定義何時以及是否重置該過程。你不能或者不應該假設任何關於哪個進程或線程正在執行你的代碼。當你在農場中談論iis時,這會得到增強。
對於exe中的簡單主代碼,操作系統創建進程和初始第一個線程,並將執行指針設置爲主函數中的第一個語句。
「靜態」在擁有過程的整個生命週期內保持狀態,這是.Net給您的保證。
「會話」是特定的實現來處理遠遠超過靜態屬性。
我會建議你也描述你的主機的問題的細化。對於iis,答案可能是AppFabric緩存。
希望這可以幫助
- 1. 替代靜態變量
- 2. 替代靜態變量?
- 3. 替代會話變量
- 4. 會話中的靜態變量
- 5. 靜態類和會話變量
- 6. ASP.NET WebApi會話與靜態變量
- 7. 靜態字段與會話變量
- 8. 用hexdump代替靜態變量
- 9. 會話變量的替代方法?
- 10. 替代會話變量被覆蓋
- 11. 會話狀態SQLServer刪除asp.net中的靜態變量
- 12. 使用靜態類和方法代替asp.net中的會話
- 13. .NET會話狀態變量
- 14. 靜態方法中的靜態變量不會改變
- 15. 真C靜態局部變量替換?
- 16. 靜態變量
- 17. 靜態變量
- 18. 靜態變量
- 19. 靜態變量
- 20. 靜態變量
- 21. 靜態變量
- 22. 靜態變量
- 23. 靜態變量
- 24. 如何通過靜態變量訪問ASP.NET Core中的會話?
- 25. 如何在靜態方法中獲取會話變量的值?
- 26. struts2,使用靜態參數調用會話變量方法
- 27. servlet中的會話管理需要靜態變量嗎?
- 28. 羣集上的Spring會話bean中的靜態變量
- 29. 會話bean中的靜態變量限制
- 30. 標籤頁...會話變量或許多靜態頁面?
你甚至Google和會話搜索嗎?看:http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx – Pleun
C#窗體= winforms? –
是的,我搜索到網絡,但我沒有找到我所需要的。也許我沒有用正確的話。是的,我主要使用Windows Forms應用程序的C#。 –