只是想確保我在這裏沒有假設什麼愚蠢的東西,當在ASP .Net Web應用程序中實現單例模式時,靜態變量作用域僅適用於當前用戶會話,對嗎?如果第二個用戶正在訪問該站點,它是一個不同的內存範圍...?ASP .NET Singleton
回答
靜態變量作用域適用於整個應用程序域,這意味着其他會話也可以訪問它。只有當你有一個服務器不同的服務器場時,你纔會有多個變量實例。
+1「只有當你有一個具有不同服務器的農場,你將擁有多個變量實例「。 – 2016-07-26 12:20:08
如果您需要它是基於用戶或會話的,請查看以下鏈接。否則,正如Otavio所說,單身人士可以在整個領域使用。
你的鏈接似乎已經死了 – 2011-07-14 16:14:23
@Michael Lang:是的,看起來像山姆改變了他的內容引擎。用新的參考更新鏈接。 – NotMe 2011-07-14 16:51:46
該單是用於整個應用領域,如果要存儲用戶會話相關的數據,使用的HttpContext會話這是專爲這一目的。當然,您可能必須重新設計您的班級結構,以便能夠提出處理您嘗試使用的數據的鍵值對方式。
正如其他人所說,一個靜態變量是global to the entire application, not single requests.
爲了讓單身全球只有個別要求,你可以使用HttpContext.Current.Items
字典。
public class Singleton
{
private Singleton() { }
public static Singleton Instance
{
get
{
if (HttpContext.Current.Items["yourKey"] == null)
HttpContext.Current.Items["yourKey"] = new Singleton();
return (Singleton)HttpContext.Current.Items["yourKey"];
}
}
}
靜態成員只有當前工作進程的範圍,所以它無關用戶,因爲其他請求不一定由同一個工作進程處理。
- 爲了與特定用戶和跨請求共享數據,請使用HttpContext.Current.Session。
- 爲了在特定請求中共享數據,請使用HttpContext.Current.Items。
- 爲了在整個應用程序之間共享數據,請爲此編寫一個機制,或配置IIS以使用單個進程並編寫單例/使用應用程序。
順便說一句,工作進程的默認數量是1,所以這就是爲什麼網絡充滿了人們認爲靜態成員具有整個應用程序的範圍。
每個用戶的整個應用程序的會話。 單個asp頁面的ViewState。
- 1. ASP .NET應用程序生命週期+ Singleton實例壽命
- 2. ASP .NET RAZOR FileUpload
- 3. ASP .NET和IIS
- 4. ASP .NET或MVC3
- 5. asp .net webservice insert
- 6. ASP .Net Web.config
- 7. asp net identity EF
- 8. ASP .NET MVC VirtualPathProvider
- 9. ASP .NET驗證
- 10. ASP .Net WebService
- 11. 根據ASP .NET
- 12. ASP .net SharePoint UI
- 13. ASP .NET HTML.DropDownListFor
- 14. ASP .Net MVC 2013
- 15. Fancybox with ASP .NET
- 16. ASP .NET和SonarLint
- 17. 在ASP .NET MVC
- 18. ASP .NET MVC ActionLink
- 19. asp net net core export to Excel
- 20. ASP .net MVC - Master page
- 21. 移植到ASP .Net
- 22. asp .net mvc授權
- 23. OpenStreeMaps與ASP MVC .NET
- 24. SSL和ASP .NET MVC
- 25. ASP NET MVC 5 SessionState
- 26. Twitter TypeAhead with Asp .Net
- 27. asp net start angular app
- 28. ASP .NET MVC報告
- 29. ASP .NET MVC層DAL
- 30. Asp .Net Gridview分頁
簡短的回答是否定的,你錯了。 – 2010-01-25 18:20:06
Duplicate:http://stackoverflow.com/questions/194999/are-static-class-instances-unique-to-a-request-or-a-server-in-asp-net – 2010-01-25 19:17:31