首页 科技内容详情
.NET5修改设置不重启自动生效

.NET5修改设置不重启自动生效

分类:科技

网址:

反馈错误: 联络客服

点击直达

皇冠投注平台出租rent.22223388.com)是皇冠(正网)接入菜宝钱包的TRC20-USDT支付系统,为皇冠代理提供专业的网上运营管理系统。系统实现注册、充值、提现、客服等全自动化功能。采用的USDT匿名支付、阅后即焚的IM客服系统,让皇冠代理的运营更轻松更安全。

.NET Core,.NET5默认设置都是只加载一次,修改设置时都需要重启才气生效,若何能修改即时生效呢,下面来演示一遍。

一、设置设置文件实时生效

1.1设置

在Program.cs的CreateHostBuilder()处增添加载设置文件的时刻,reloadOnChange:true。

这样设置文件修改的时刻,程序就会监听到文件发生转变,自动重新加载了。

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
           .ConfigureAppConfiguration((context, config) =>
            {
                config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();

                });

1.2验证

appsettings.json文件内容如下

{
  "TestSetting": "123",
  "AppOptions": {
    "UserName": "zhangsan"
  }
}

代码:

 public class HomeController : Controller
    {
     private readonly ILogger<HomeController> _logger;
        private readonly IConfiguration _configuration;
        public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
        {
            _logger = logger;
            _configuration = configuration;
        }

        public IActionResult Index()
        {
            string Name = _configuration["TestSetting"];
            string Name2 = _configuration["AppOptions:UserName"];
            ViewBag.Name = Name;
            ViewBag.Name2 = Name2;
            return View();
        }
}

 

界面显示:

 

 

 把设置文件修改为:

{
  "TestSetting": "abc",
  "AppOptions": {
    "UserName": "zhangsan123"
  }
}

刷新页面,已经发生转变:

 

 

 

1.3 IOptions方式实时生效

新建AppOptions.cs类

ug环球360www.ugbet.us)开放环球UG代理登录网址、会员登录网址、环球UG会员注册、环球UG代理开户申请、环球UG电脑客户端、环球UG手机版下载等业务。

/// <summary>
    /// 设置文件
    /// </summary>
    public class AppOptions
    {
        public string UserName { get; set; }
    }

在Startup.cs处把设置加到Options

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.Configure<AppOptions>(Configuration.GetSection("AppOptions"));
        }

使用:

 public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly IConfiguration _configuration;
        private AppOptions _options;
        public HomeController(ILogger<HomeController> logger, IConfiguration configuration, IOptionsMonitor<AppOptions> appOptions)
        {
            _logger = logger;
            _configuration = configuration;
            _options = appOptions.CurrentValue;
        }

        public IActionResult Index()
        {
            string Name = _configuration["TestSetting"];
            string Name2 = _options.UserName;
            ViewBag.Name = Name;
            ViewBag.Name2 = Name2;
            return View();
        }
}

IOptions有三种方式

//IOptions<T> //站点启动后,获取到的值永远稳固
//IOptionsMonitor<T> //站点启动后,若是设置文件有转变会公布事宜 (加载设置时,reloadOnChange:true 必须为true)
//IOptionsSnapshot<T> //站点启动后,每次获取到的值都是设置文件里的最新值 (加载设置时,reloadOnChange:true 必须为true)

注重: 

在 AddSingleton Services中使用 IOptionsMonitor<T>也是无法实现设置立刻生效的,而IOptionsSnapshot<T>启动就会报错。

例:

 public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private UserService _userService;
        public HomeController(ILogger<HomeController> logger, UserService userService)
        {
           
            _userService = userService;
        }

        public IActionResult Index()
        {
            string Name2 = _userService.GetName();
            ViewBag.Name2 = Name2;
            return View();
        }
}

 

 public class UserService
    {
        private AppOptions _options;
        public UserService(IOptionsMonitor<AppOptions> appOptions)
        {
            _options = appOptions.CurrentValue;
        }
        public string GetName()
        {
            var Name = _options.UserName;
            return Name;
        }
    }

 

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.Configure<AppOptions>(Configuration.GetSection("AppOptions"));
            services.AddSingleton<UserService>();
        }

上面的UserService是单例注入的,通过IOptions的方式是实现不了设置实时刷新的,这种情形只能通过1.2中的 _configuration["AppOptions:UserName"]; 方式获取才气实现。

以是,这几种方式要凭证情景变换使用。

1.4多个设置文件加载实时生效

增添多一个db设置文件

 

 

修改Program.cs处CreateHostBuilder(),也是加载时加上reloadOnChange:true 就可以了。

  public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((context, config) =>
            {
                config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
                config.AddJsonFile("Configs/dbsetting.json", optional: true, reloadOnChange: true);
            })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();

                });

 

使用也是一样的:

 public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly IConfiguration _configuration;
        private AppOptions _options;
        public HomeController(ILogger<HomeController> logger, IConfiguration configuration, IOptionsMonitor<AppOptions> appOptions)
        {
            _logger = logger;
            _configuration = configuration;
            _options = appOptions.CurrentValue;
        }

        public IActionResult Index()
        {
            string Name = _configuration["TestSetting"];
            string Name2 = _configuration["db:connection1"];
            ViewBag.Name = Name;
            ViewBag.Name2 = Name2;
            return View();
        }
}

 

皇冠登录线路www.x2w333.com)实时更新发布最新最快的皇冠手机网址、皇冠手机网址线路、皇冠手机网址登录网址、皇冠手机网址管理端、皇冠手机网址手机版登录网址、新2手机皇冠登录网址。

  • 皇冠平台出租(www.huangguan.us) @回复Ta

    2021-10-18 00:04:06 

    USDT场外交易www.Uotc.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U担保开放usdt otc API接口、支付回调等接口。

    小白一脸蒙。

发布评论