asp.net core 에서 응용 설정 을 다시 불 러 옵 니 다.

asp.net core 응용 프로그램 설정 다시 불 러 오기
저 는 설정 을 데이터베이스 나 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();
    }
  }
}
아주 간단 하지 않 습 니까?다음은 우리 가 시도 해 보 겠 습 니 다.이것 을 참고 하 셔 도 됩 니 다예시 항목
기본 항목 설정 은 apptsettings.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

그리고 abc.json 파일 을 수정 합 니 다.

{
 "AppSettings": {
  "TestNumber": 12,
  "RootUser": "WeihanLi 123"
 }
}
저장 을 수정 한 후 방금 페이지 를 새로 고 칩 니 다.방금 내용 인지 볼 수 있 습 니 다.설정 을 다시 불 러 오지 않 았 음 을 증명 합 니 다.다음 에 설정 을 다시 불 러 오 는 방법 을 시도 해 보 겠 습 니 다.
postman 이나 fiddler 또는 다른 좋아 하 는 도 구 를 사용 하여 PUT 요청http://localhost:5000/api/configurations을 보 냅 니 다.여기 서 저 는 postman 을 사용 하여 PUT 인터페이스 로 설정 을 다시 불 러 옵 니 다.

200 즉 인터페이스 호출 에 성공 하 였 습 니 다.방금 페이지 를 새로 고치 면 페이지 의 데이터 가 이미 변 한 것 을 볼 수 있 습 니 다.이것 은 우리 가 설정 한 인 터 페 이 스 를 다시 불 러 오 는 것 이 유효 하 다 는 것 을 증명 합 니 다.

소스 코드 분석ConfigurationBuilder빌 드 할 때 무엇 을 했 는 지 보 자.ConfigurationBuilder 원본 코드

여기 서 마지막 으로 돌아 오 는 것 을 볼 수 있 는 것 은 하나의IConfigurationRoot대상 이다.다시 보 자IConfigurationRoot 소스 코드
IConfigurationRoot에서Reload방법 을 정의 한 것 을 볼 수 있 습 니 다.이 방법 은 아래Providers에서 설정 을 다시 불 러 옵 니 다.여기 서 우 리 는IConfigurationReload방법 으로 프로그램의 설정 을 다시 불 러 올 수 있다 는 것 을 알 수 있 습 니 다.그리고 우리 가WebHost.CreateDefaultBuilder(args).Build()무엇 을 했 는 지 알 수 있 습 니 다.
https://github.com/aspnet/AspNetCore/blob/master/src/DefaultBuilder/src/WebHost.cs

apptsettings.json 파일 이 자동 으로 reload 설정 을 하 는 이 유 를 볼 수 있 습 니 다.마지막 으로WebHostBuilder대상 을 되 돌려 주 는 것 을 볼 수 있 습 니 다.
Asp.Net coreWebHostBuilder대상 보기Build방법https://github.com/aspnet/AspNetCore/blob/master/src/Hosting/Hosting/src/WebHostBuilder.csBuildCommonServices에서 이러한 코드 를 볼 수 있다https://github.com/aspnet/AspNetCore/blob/master/src/Hosting/Hosting/src/WebHostBuilder.cs

위 에서 우 리 는ConfigurationBuilderBuild 를 알 고 돌아 온 것 은 하나의IConfigurationRoot대상 이 고,여기에 주입 하 는 것 은 하나의IConfiguration대상IConfigurationRoot실현IConfiguration인터페이스 이기 때문에 우 리 는 의존 주입 에서IConfiguration대상 을 직접IConfigurationRoot로 사용 할 수 있다.이것 이 바로 우리 가 직접IConfiguration대상 을 얻 는 이유 이다.
Memo
이 쯤 에서 잠시 마 치 겠 습 니 다.수확 이 있 었 으 면 좋 겠 습 니 다~
위 에서 말 한 것 은 소 편 이 소개 한 asp.net core 재 불 러 오기 응용 설정 에 대한 상세 한 설명 과 통합 입 니 다.여러분 께 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기