只是想确保我在这里没有假设什么愚蠢的东西,当在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