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 합 니 다.여기에 파일 을 추가 합 니 다.여기 설정
reloadOnChange
은false
이 고 예제 코드 는 다음 과 같 습 니 다.
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
에서 설정 을 다시 불 러 옵 니 다.여기 서 우 리 는IConfiguration
의Reload
방법 으로 프로그램의 설정 을 다시 불 러 올 수 있다 는 것 을 알 수 있 습 니 다.그리고 우리 가WebHost.CreateDefaultBuilder(args).Build()
무엇 을 했 는 지 알 수 있 습 니 다.https://github.com/aspnet/AspNetCore/blob/master/src/DefaultBuilder/src/WebHost.cs
apptsettings.json 파일 이 자동 으로 reload 설정 을 하 는 이 유 를 볼 수 있 습 니 다.마지막 으로
WebHostBuilder
대상 을 되 돌려 주 는 것 을 볼 수 있 습 니 다.Asp.Net core
WebHostBuilder
대상 보기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위 에서 우 리 는
ConfigurationBuilder
Build 를 알 고 돌아 온 것 은 하나의IConfigurationRoot
대상 이 고,여기에 주입 하 는 것 은 하나의IConfiguration
대상IConfigurationRoot
실현IConfiguration
인터페이스 이기 때문에 우 리 는 의존 주입 에서IConfiguration
대상 을 직접IConfigurationRoot
로 사용 할 수 있다.이것 이 바로 우리 가 직접IConfiguration
대상 을 얻 는 이유 이다.Memo
이 쯤 에서 잠시 마 치 겠 습 니 다.수확 이 있 었 으 면 좋 겠 습 니 다~
위 에서 말 한 것 은 소 편 이 소개 한 asp.net core 재 불 러 오기 응용 설정 에 대한 상세 한 설명 과 통합 입 니 다.여러분 께 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
작업 중 문제 해결 - (win 2003 asp. net) Session 과 페이지 전송 방법 으로 해결 방안 을 정상적으로 사용 할 수 없습니다.또한 F 는 처음에 우리 의 BP & IT 프로젝트 팀 이 Forms 폼 검증 을 사용 했다 고 판단 할 수 있 습 니 다. 페이지 를 뛰 어 넘 는 것 은http://hr.bingjun.cc/MyTask/MyTas...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.