FileConfigurationProvider및 파생 형식(Microsoft 사용<) Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile*>, <Microsoft. Extensions.Configuration.XmlConfigurationExtensions.AddXmlFile*>및 <Microsoft. Extensions.Configuration.IniConfigurationExtensions.AddIniFile*>) 이제 구문 분석 오류 외에도 IO 오류를 OnLoadException 콜백으로 전달합니다.
도입된 버전
.NET 11 미리 보기 7
이전 동작
이전에는 구성 파일을 열 때 발생한 IO 오류(예: 디스크에서 AddJsonFileAddXmlFileAddIniFile이미 로드된 파일이 변경되었을 때 트리거된 , 또는 다시 로드)가 콜백에 전달되지 FileLoadExceptionContextOnLoadException 않았습니다. 구문 분석 오류만 해당 콜백으로 전달되었습니다. IO 오류는 사용할 OnLoadException수 없습니다. 대신 UnobservedTaskException.
결과적으로 전달된 OnLoadException 속성 FileLoadExceptionContext 은 Exception 항상 an InvalidDataException 또는 FileNotFoundException.이었습니다. 예외를 이러한 형식 중 하나로 무조건 캐스팅하는 코드가 올바르게 작동했습니다.
새 동작
.NET 11부터 IO 오류가 콜백에 FileLoadExceptionContext 전달된 오류로 OnLoadException 전달됩니다. 콜백이 등록되지 않은 경우를 제외하고 IO 오류는 더 이상 사용할 TaskScheduler.UnobservedTaskException수 없습니다 OnLoadException .
따라서 이제 속성 FileLoadExceptionContext 이 Exception 모든 형식의 예외가 될 수 있지만 가장 일반적으로IOException는 구성 IFileProvider 한 예외(사용자 지정 공급자 포함)가 throw할 수 있습니다. 예외를 무조건 캐스팅하거나 FileNotFoundException 이러한 InvalidCastException 새 예외 InvalidDataException 형식을 자동으로 잘못 처리하거나 throw할 수 있는 코드입니다.
파괴적 변경 유형
이 변경 사항은 동작 변경입니다.
변경 이유
이 변경은 버그 수정입니다. 구성 파일 IO 오류는 의미 있는 로드 오류이며 콜백을 OnLoadException 등록하는 코드는 구문 분석 오류뿐만 아니라 구성 파일이 로드되는 동안 발생하는 모든 오류를 관찰해야 합니다. 자세한 내용은 dotnet/runtime#113964 참조하세요.
권장 작업
- IO 예외 또는 파생 형식을
FileConfigurationProvider사용하여TaskScheduler.UnobservedTaskException검색한 경우 해당 논리를 콜백으로OnLoadException이동합니다. - 등록된
OnLoadException콜백이 단지InvalidDataException또는FileNotFoundException.가 아닌 모든 형식의 예외를 처리할 수 있는지 확인합니다. 무조건 캐스팅을 피하고 패턴 일치 또는 형식 검사를 대신 사용합니다.
영향을 받는 API
.NET