c# - ASP.NET 维护静态变量

标签 c# asp.net variables iis static

最近我们了解了 IIS 的 AppDomain 回收以及它如何影响将静态变量设置为其主要值(空、0 等)。

我们使用一些在静态构造函数中初始化的静态变量(首次初始化时,配置值如“小数位数”、“管理员电子邮件”等...从数据库检索),然后仅读取它们在网站执行过程中的值(value)。

解决这个问题的最佳方法是什么?一些可能的想法:

  • 在每次检索时检查变量是否为 null/0(不喜欢它,因为可能会影响性能+花费时间将此检查添加到每个变量+添加到项目中的代码重载)

  • 以某种方式阻止 AppDomain 回收(这种重置逻辑不会在具有静态变量的 Windows 窗体中发生,它不应该像在两种环境中使用相同的语言一样工作吗?至少在静态变量管理的标准方面) )

  • 使用其他方式保存这些变量(但我们认为,为了将某些值用作信息作为所有用户的全局引用,静态变量是性能/编码方面的最佳选择)

    <
  • 订阅在这些 AppDomain 回收中触发的事件,以便我们可以重新初始化所有这些变量(如果无法阻止回收,这可能是最好的选择...)

想法?

最佳答案

我会采用你不喜欢的方法。

Checking if variable is null/0 at each retrieval (don't like it because of a possible performance impact + time spent to add this check to each variable + code overload added to the project)

  • 我认为这比退出 web.config 更快。
  • 你得到一个类型化的对象

这不会影响性能,因为您不会针对每个检索请求都访问数据库。仅当您发现当前值设置为默认值时,您才会访问数据库(或任何源)。

关于c# - ASP.NET 维护静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235193/

相关文章:

c# - MVVM Light Toolkit 的文档/示例?

html - Web 浏览器是否尝试修复错误/已弃用的 html?

c# - .Net cookie 不断返回,过期时间为零

php - PHP 中的 if-else 与多个条件

c# - DynamoDB 无法转换为 System.DateTime

c# - 使用 C# 库还原 azure blob 快照

asp.net - Umbraco 有什么好的电子商务扩展/插件吗?

c#通过转义引号在JSON字符串中插入变量

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

C# 将动态转换为字符串的最佳方法