91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在asp.net core中配置重新加載應用

發布時間:2021-05-25 16:23:13 來源:億速云 閱讀:184 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在asp.net core中配置重新加載應用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

asp.net core重新加載應用配置Intro

我把配置放在了數據庫或者是Redis里,配置需要修改的時候我要直接修改數據庫,然后調用一個接口去重新加載應用配置,于是就嘗試寫一個運行時重新加載配置的接口。

Configuration 重新加載實現

重新加載配置的接口其實很簡單,經過看 Configuration 的源碼可以知道,如果想要重新加載應用配置,需要一個 IConfigurationRoot 對象,而 IConfigurationRoot 其實可以直接拿注入服務中的 IConfiguration 對象,服務中的 IConfiguration 對象也是實現了 IConfigurationRoot 接口的實例。后面我們一起看源碼就更清晰了。

來看實現重新加載配置的代碼

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;

namespace TestWebApplication.Controllers
{
  [Route("api/[controller]")]
  public class ConfigurationsController : Controller
  {
    private readonly IConfigurationRoot _configuration;

    public ConfigurationsController(IConfiguration configuration)
    {
      _configuration = configuration as IConfigurationRoot;
    }

    [HttpGet]
    public IActionResult Get()
    {
      return Ok(new
      {
        RootUser = _configuration.GetAppSetting("RootUser") // 這里 GetAppSetting 是一個自定義擴展方法,獲取AppSettings 節點下的配置信息
      });
    }

    [HttpPut]
    public IActionResult Put()
    {
      _configuration.Reload();
      return Ok();
    }
  }
}

是不是很簡單,下面我們來嘗試一下,你可以參考這個示例項目

因為默認的項目配置會監聽 appsettings.json 文件是否修改,如果已修改就會重新reload,這里我新加一個文件,這里設置 reloadOnChangefalse,示例代碼如下:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
      WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration(configBuilder =>
        {
          configBuilder.AddJsonFile("abc.json", optional: true, reloadOnChange: false);
        })
        .UseStartup<Startup>();

abc.json 的文件內容如下:

{
 "AppSettings": {
  "TestNumber": 12,
  "RootUser": "WeihanLi"
 }
}

dotnet run 啟動網站,然后在瀏覽器中訪問 http://localhost:5000/api/configurations

怎么在asp.net core中配置重新加載應用

然后我們修改 abc.json 文件

{
 "AppSettings": {
  "TestNumber": 12,
  "RootUser": "WeihanLi 123"
 }
}

修改保存之后刷新剛才的頁面,可以看到還是剛才的內容,證明并沒有重新加載配置,接下來嘗試我們的重新加載配置方法

使用 postman 或 fiddler 或其他你喜歡的工具發一個 PUT 請求到 http://localhost:5000/api/configurations,這里我使用 postman 調用 PUT 接口重新加載配置

怎么在asp.net core中配置重新加載應用

返回 200 即接口調用成功,重新刷新剛才的頁面就可以看到頁面上的數據已經發生變化,這也就證明了我們重新加載配置的接口生效了。

怎么在asp.net core中配置重新加載應用

源碼解析

來看 ConfigurationBuilder 在 Build 的時候做了什么,ConfigurationBuilder 源碼

怎么在asp.net core中配置重新加載應用

可以看到這里最后返回的是一個 IConfigurationRoot 對象,再來看 IConfigurationRoot 源碼

怎么在asp.net core中配置重新加載應用

可以看到 IConfigurationRoot 定義了一個 Reload 的方法,這個方法會從下面的 Providers 中重新加載配置,看到這里我們就知道可以通過 IConfigurationReload 方法來重新加載應用程序的配置了,然后我們來看 WebHost.CreateDefaultBuilder(args).Build() 做了什么
https://github.com/aspnet/AspNetCore/blob/master/src/DefaultBuilder/src/WebHost.cs

怎么在asp.net core中配置重新加載應用

這里我們可以看到為什么 appsettings.json 文件會自動 reload 配置,可以看到最后返回了一個 WebHostBuilder 對象

看 Asp.Net core WebHostBuilder 對象的 Build 方法 https://github.com/aspnet/AspNetCore/blob/master/src/Hosting/Hosting/src/WebHostBuilder.cs

BuildCommonServices 可以看到這樣一段代碼 https://github.com/aspnet/AspNetCore/blob/master/src/Hosting/Hosting/src/WebHostBuilder.cs

怎么在asp.net core中配置重新加載應用

上面我們已經知道 ConfigurationBuilder Build 之后返回的是一個 IConfigurationRoot 對象,而這里注入是一個 IConfiguration 對象(IConfigurationRoot 實現 IConfiguration 接口),所以我們就可以從依賴注入中獲取 IConfiguration 對象直接當作 IConfigurationRoot 來使用,這也就是為什么我們會直接獲取一個 IConfiguration 對象直接 as IConfigurationRoot

ASP.NET 是什么

ASP.NET 是開源,跨平臺,高性能,輕量級的 Web 應用構建框架,常用于通過 HTML、CSS、JavaScript 以及服務器腳本來構建網頁和網站。

關于怎么在asp.net core中配置重新加載應用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合山市| 定日县| 泰宁县| 南川市| 灵武市| 来宾市| 嘉兴市| 正蓝旗| 宝鸡市| 霞浦县| 屏边| 安阳市| 阿拉善右旗| 施秉县| 仁化县| 南开区| 胶南市| 岑溪市| 巴林左旗| 马公市| 惠安县| 汶川县| 天镇县| 瑞昌市| 醴陵市| 百色市| 南昌县| 正蓝旗| 海淀区| 广宗县| 天津市| 绵竹市| 邓州市| 长海县| 汉沽区| 冕宁县| 芜湖市| 贺兰县| 青阳县| 安达市| 翁源县|