c# - 更改 web.config 会导致 IIS 网站刷新,是否还会再次触发运行静态构造函数?

标签 c# .net configuration static

我有一个静态类,它在每次需要建立连接时加载我的连接字符串的值。这样做是为了确保在更改时使用最新的连接字符串。但它适用于在 IIS 中托管的网站,因此只要 web.config 发生更改,网站就会重新启动。

因此连接字符串也可以静态加载:

using System.Configuration;

public static class Settings
{
    static Settings()
    {
        Database = ConfigurationManager.ConnectionStrings["database"].ConnectionString;
        Timeout = ConfigurationManager.AppSettings["timeout"];
    }

    public static string Database { get; }
    public static string Timeout { get; }
}

这是否允许在部署后更改 IIS 站点的数据库连接?
对于 Windows 服务?

编辑:显然这个问题的表述不当。我知道如何确保重新加载配置值,问题是这个特定设置是否可以完成这项工作。这是一个是/否问题。
我知道如何做到这一点,所以每次都会读取该属性。我关心的是性能。每次读取文件都很昂贵。我宁愿只访问一个静态属性。考虑到保存 web.config 将重新启动网站,因此无论如何都会读取文件;我的代码也不需要这样做。所以更具体的问题是:
保存 web.config 是否会触发我的静态构造函数,从而重新加载配置值?
另一个编辑:也更改了顶部的问题。

最佳答案

从 C# 6.0 开始,您可以使用 expression bodied readonly properties ,所以你的类可以这样写:

使用系统配置;

public static class Settings
{
    public static string Database => ConfigurationManager.ConnectionStrings["database"].ConnectionString;
    public static string Timeout => ConfigurationManager.AppSettings["timeout"];
}

表达式主体属性将在每次访问时执行表达式,因此如果配置文件发生更改,您甚至不需要重新启动服务。

进一步阅读:This SO postone it's linked to .

关于c# - 更改 web.config 会导致 IIS 网站刷新,是否还会再次触发运行静态构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56793814/

相关文章:

c# - 是否有针对c#语言版本的指令

c# - 在 C# 中使用 pscp 通过 post 请求在 Windows 和 Linux 之间传输文件

c# - 调试器未附加到进程

.net - Keys.Control/Shift 和 Keys.ControlKey/ShiftKey 之间的确切区别是什么?

php - Symfony 配置默认值

tomcat - 配置 Spring MVC 应用程序

c# - 如何在 IValueConverter 中设置 DateTime 格式并返回字符串值?

c# - FtpWebResponse IDisposable 是否关闭响应?

c# - 如何从 Win32 进程调用 .NET DLL?

eclipse - 在 Eclipse 中禁用自动加载 JBoss 新闻博客信息