ASP.NET 应用程序状态与静态对象

Posted

技术标签:

【中文标题】ASP.NET 应用程序状态与静态对象【英文标题】:ASP.NET Application state vs a Static object 【发布时间】:2010-09-23 03:43:25 【问题描述】:

如果我有一个标准的 ASP.NET 应用程序,将对象设为静态与将对象实例置于应用程序状态之间有什么区别吗?

据我了解,这两个对象在应用程序域中都存在一次。

其次,如果您在引用的 dll 中有一个静态对象,对于 ASP.NET 站点,会发生什么情况。它也是应用域的一部分,所以它永远存在一次?

【问题讨论】:

我不知道细节,但我会问自己一个问题“它是我的应用程序状态的一部分吗” - 然后把它放在那里。如果它是静态的,也可能发生在例如 Windows 客户端中 - 会将其创建为静态的。 【参考方案1】:

发件人:http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312607

ASP.NET 包括应用程序状态 主要是为了兼容 经典的 ASP,使其更容易 将现有应用程序迁移到 ASP.NET。建议您 将数据存储在静态成员中 应用程序类而不是在 应用对象。这增加了 性能,因为您可以访问 静态变量比你更快 访问应用程序中的项目 字典。

另外,是的,静态变量的行为方式相同,无论它们从何处加载,并且每个应用程序域仅存在一次(除非您谈论的是那些标记为 [ThreadStatic] 的变量)

【讨论】:

当您使用静态变量而不是应用程序状态对象时,您还可以获得类型安全。 新网址:support.microsoft.com/en-us/help/312607/…

以上是关于ASP.NET 应用程序状态与静态对象的主要内容,如果未能解决你的问题,请参考以下文章

为 asp.net 网站缓存大对象

[译] ASP.NET 生命周期 – ASP.NET 上下文对象

asp.NET - 菜单上选定页面的静态选定样式问题

ASP.NET Core使用静态文件目录游览与MIME类型管理

在 asp.net 中创建静态对象列表

静态 ID - ASP.NET Core 分布式缓存标记帮助程序