首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET核心appsettings.json reloadOnChange不能处理符号链接文件?

ASP.NET核心的appsettings.json文件是用于存储应用程序的配置信息的文件。reloadOnChange是一个配置项,用于指定当appsettings.json文件发生变化时是否重新加载应用程序。

符号链接文件是一种特殊类型的文件,它是一个指向另一个文件或目录的链接。在某些情况下,appsettings.json文件可能是一个符号链接文件,而不是一个实际的文件。

然而,ASP.NET核心的reloadOnChange配置项并不能处理符号链接文件。这是因为reloadOnChange是通过监视文件的最后修改时间来检测文件变化的,而符号链接文件的最后修改时间不会随着目标文件的变化而变化。

要解决这个问题,可以使用其他方法来处理符号链接文件的变化。一种方法是使用操作系统提供的API来监视符号链接文件的变化,并在变化时手动重新加载配置。另一种方法是将符号链接文件解析为实际的文件,并监视实际文件的变化。

对于ASP.NET核心应用程序,可以使用FileSystemWatcher类来监视文件的变化,并在变化时重新加载配置。以下是一个示例代码:

代码语言:txt
复制
using Microsoft.Extensions.Configuration;
using System.IO;

public class ConfigReloader
{
    private IConfigurationRoot _configuration;
    private FileSystemWatcher _fileWatcher;

    public ConfigReloader()
    {
        _configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
            .Build();

        _fileWatcher = new FileSystemWatcher(Path.GetDirectoryName("appsettings.json"));
        _fileWatcher.Filter = Path.GetFileName("appsettings.json");
        _fileWatcher.Changed += (sender, e) =>
        {
            _configuration.Reload();
            // 处理配置变化的逻辑
        };
        _fileWatcher.EnableRaisingEvents = true;
    }
}

在上述示例中,我们创建了一个ConfigReloader类,它在构造函数中初始化了一个ConfigurationBuilder,并设置了reloadOnChange为false,以避免自动重新加载配置。然后,我们创建了一个FileSystemWatcher对象,用于监视appsettings.json文件的变化,并在变化时手动重新加载配置。

需要注意的是,上述示例中的代码只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云数据库(TencentDB)等。你可以通过访问腾讯云官方网站获取更详细的产品介绍和文档信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core 网站运行时修改设置如何自动生效

ASP.NET Core中,如果修改了appsettings.json中的设置,那么默认情况下就得重启网站才能生效。有没有办法在修改设置后自动刷新并应用呢?...背景 首先,我们看看默认模板建出来的 ASP.NET Core 网站,配置文件有两个: appsettings.json appsettings.Development.json 前者用于生产环境,后者用于开发环境...对于Json文件,有一个参数是reloadOnChange,表示是否在文件修改后,重新读取并加载到内存里,设为true。...破解谜团 刚才我们不指定reloadOnChange竟然也能做热修改,令人懵逼?我猜想,这个reloadOnChange,在最新版本的ASP.NET Core(2.2)中可能是默认启用的。...关于这一点,我竟然没有找到官方的资料,不能确定这个参数的具体作用。

2.8K20

ASP.NET Core 中修改配置文件后自动加载新的配置

ASP.NET Core 中修改配置文件后自动加载新的配置 在 ASP.NET Core 默认的应用程序模板中, 配置文件处理如下面的代码所示: config.AddJsonFile( path...: "appsettings.json", optional: true, reloadOnChange: true ); config.AddJsonFile( path: $...{env.EnvironmentName}.json", optional: true, reloadOnChange: true ); appsettings.json 和 appsettings...可以在 ASP.NET Core 应用中利用这个特性, 实现修改配置文件之后, 不需要重启应用, 自动加载修改过的配置文件, 从而减少系统停机的时间。..., 根据中间件创建处理连时创建一次全局实例, 所以只能通过注入 IOptionsMonitor 来监听配置文件的修改情况, 示例代码如下: public class TestMiddleware

2.4K71

从头编写 asp.net core 2.0 web api 基础框架 (3)

, ex); return StatusCode(500, "处理请求的时候发生了错误!")...二、是通过环境变量控制配置文件 asp.net core 支持各式各样的配置方法,包括使用JSON,xml, ini文件,环境变量,命令行参数等等。建议使用的还是JSON。...首先是要找到appSettings.json文件asp.net core 2.0已经做好了相关配置,它默认会从ContentRoot去找appSettings.json文件。...然后使用AddJsonFile这个方法来添加Json配置文件,第一个参数是文件名;第二个参数optional表示这个配置文件是否是可选的,把它设置成false表示我们不必非得用这个配置文件;第三个参数reloadOnChange...建立好appSettings.Production.json后,可以发现它被作为appSettings.json的一个子文件显示出来,这样很好: ?

1.5K70

.NET Core 配置Configuration杂谈

开始 新建一个ConsoleApp(这里为了方便演示就用控制台程序来演示了,而不用ASP.NET Core),添加两个Package: Install-Package Microsoft.Extensions.Configuration...SetBasePath()方法是用来设置我们配置对象需要的配置文件的基础路径,比如我们将基础路径设置为C:\ConsoleApp,那么他读取我们的配置文件appsettings.json的路径将是C:\...ConsoleApp\appsettings.json 运行: ?...我们在添加文件的时候可以将一个名为reloadOnChange的参数设置为true,那么当我们的文件发生更改时,就会重新载入配置到内存中来,然后我们获取到的配置就行最新的。...") .AddJsonFile("appsettings.Test.json",true,reloadOnChange:true); var config = builder.Build();

82140

ASP.NET Core 2.2 : 二十三. 深入聊一聊配置的内部处理机制

(ASP.NET Core 系列目录) 一、数据源的注册 在上一节介绍的数据源设置中,appsettings.json、命令行、环境变量三种方式是被系统自动加载的,这是因为系统在webHost.CreateDefaultBuilder...以appsettings.json对应的config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)方法为例,...Load方法用于数据源的数据的读取与处理,而Data用于保存最终结果。通过逐一调用Provider的Load方法完成了整个配置系统的数据加载。...stream 的Load方法写在JsonConfigurationProvider、IniConfigurationProvider、XmlConfigurationProvider这样的子类中,用于专门处理自身对应的格式的文件...FileConfigurationProvider的构造方法中添加了对设置了对应文件的监控,当然这里会首先判断数据源的ReloadOnChange选项是否被设置为True了。

77040

.NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9998021.html 写在前面 上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它...而asp.net core的main方法就在Program.cs文件中。 ?...构造了WebHost实例还不能直接返回,还需要通过Initialize对WebHost实例进行初始化操作。那我们看看在初始化函数Initialize中,都做了什么事情吧。 ?...配置文件 上面给大家介绍了ASP.NET Core的启动过程,中间牵扯到了一些依赖注入的概念。关于依赖注入的概念呢,我们后面再说,这里先给大家讲解下配置文件的加载过程。...这里多讲一点,传统asp.net的web.config文件如果有更改的话是必须要重启站点才能使,配置文件生效的,但是asp.net core的配置文件是支持热更新的,及不重启网站也能加载更新,只需要设置一下属性即可

60420

.NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9998021.html 写在前面 上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了...而asp.net core的main方法就在Program.cs文件中。...构造了WebHost实例还不能直接返回,还需要通过Initialize对WebHost实例进行初始化操作。那我们看看在初始化函数Initialize中,都做了什么事情吧。...配置文件 上面给大家介绍了ASP.NET Core的启动过程,中间牵扯到了一些依赖注入的概念。关于依赖注入的概念呢,我们后面再说,这里先给大家讲解下配置文件的加载过程。...的web.config文件如果有更改的话是必须要重启站点才能使,配置文件生效的,但是asp.net core的配置文件是支持热更新的,及不重启网站也能加载更新,只需要设置一下属性即可,如下图所示: !

67600

.NET Core开发实战(第11课:文件配置提供程序)--学习笔记

11 | 文件配置提供程序:自由选择配置的格式 文件配置提供程序 Microsoft.Extensions.Configuration.Ini Microsoft.Extensions.Configuration.Json...,或者从不同的位置来读取文件 文件提供程序支持 文件是否可选 监视文件的变更 下面通过代码来了解这些特性 源码链接: https://github.com/witskeeper/geektime/tree...optional,默认情况下是 false builder.AddJsonFile("appsettings.json", optional:false); 这意味当文件不存在的时候它会报错 它的另一个参数是...reloadOnChange, 默认情况下是 true builder.AddJsonFile("appsettings.json", optional:false, reloadOnChange:true...(); builder.AddJsonFile("appsettings.json", optional:false, reloadOnChange:true); builder.AddIniFile(

55320

.NET Core开发实战(第19课:日志作用域:解决不同请求之间的日志干扰)--学习笔记

", optional: false, reloadOnChange: true); var config = configBuilder.Build(); IServiceCollection serviceCollection...:如果在调用链追踪过程中记录了多条日志,希望把日志串联在一起的时候,作用域就发挥了作用 源码链接: https://github.com/witskeeper/geektime/tree/master/...", optional: false, reloadOnChange: true); var config = configBuilder.Build();..."Trace", 修改为 "LoggingScopeDemo.Program": "Error", 修改保存后在控制台输入回车,只会输出 Error 级别 这是在控制台里面的效果,接下来看一下在一个 ASP.NET...,复杂的流程的过程中,或者调用链的处理过程中,当然还有其他的场景任意的需要将多条日志串联起来的场景,都可以用作用域来实现这个能力

45920

ASP.NET Core 2.0 : 五.服务是如何加载并运行的, Kestrel、配置与环境

"跨平台"后的ASP.Net Core是如何接收并处理请求的呢? 它的运行和处理机制和之前有什么不同?...本章从"宏观"到"微观"地看一下它的结构以及不同时期都干了些什 本章主要内容如下: ASP.NET Core 的运行机制: "宏观"的看一下Http请求的处理流程. ...WebHostBuilder的一系列配置 系统离不开各种各样的配置, 比如常见的读取配置文件, 指定日志处理程序等, 我们详细的看一下....如上代码会读取 appsettings.json 和 appsettings....除了上述内容, ASP.NET Core留给我们作为扩展的地方主要放在了Startup文件中, 即图2中的⑩Startup, 这里进行了两个比较重要的工作, ⑧服务的依赖注入和⑨配置管道,

1K90

ASP.NET Core 2.0 : 五.服务是如何加载并运行的, Kestrel、配置与环境

"跨平台"后的ASP.Net Core是如何接收并处理请求的呢? 它的运行和处理机制和之前有什么不同? 本章从"宏观"到"微观"地看一下它的结构以及不同时期都干了些什么....ASP.NET Core 系列目录 本章主要内容如下: ASP.NET Core 的运行机制: "宏观"的看一下Http请求的处理流程. ...请求经这些服务器进行初步处理后转发给Kestrel(即图中虚线的可选流程). 大概的运行机制就是这样, 那么具体到ASP.NET Core Application是如何运行的呢?...WebHostBuilder的一系列配置 系统离不开各种各样的配置, 比如常见的读取配置文件, 指定日志处理程序等, 我们详细的看一下....如上代码会读取 appsettings.json 和 appsettings.

94730
领券