Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
FileConfigurationProvideroch dess härledda typer (används av <Microsoft. Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile*>, <Microsoft. Extensions.Configuration.XmlConfigurationExtensions.AddXmlFile*>, och <Microsoft. Extensions.Configuration.IniConfigurationExtensions.AddIniFile*) vidarebefordrar nu I/O-fel> till återanropet OnLoadException utöver parsningsfel.
Version lanserad
.NET 11 Förhandsversion 7
Tidigare beteende
Tidigare vidarebefordrades inte I/O-fel som uppstod när en konfigurationsfil öppnades (till exempel från , , eller en ny inläsning som utlöstes när en redan inläst fil ändrades på disken) till motringningen FileLoadExceptionContextOnLoadException. AddIniFileAddXmlFileAddJsonFile Endast parsningsfel vidarebefordrades till återanropet. I/O-fel kunde inte observeras med hjälp av OnLoadException. I stället kunde de observeras med hjälp av UnobservedTaskException.
Som en följd av detta var egenskapen FileLoadExceptionContext som Exception vidarebefordrades till OnLoadException alltid en InvalidDataException eller FileNotFoundException. Kod som villkorslöst omvandlar undantaget till en av dessa typer fungerade korrekt.
Nytt beteende
Från och med .NET 11 vidarebefordras I/O-fel till motringningen FileLoadExceptionContextOnLoadException. I/O-fel kan inte längre observeras med hjälp av TaskScheduler.UnobservedTaskException, förutom när inga OnLoadException återanrop har registrerats.
Exception Därför kan egenskapen på FileLoadExceptionContext nu vara ett undantag av alla typer – oftast IOException, men eventuellt alla undantag som genereras av de konfigurerade IFileProvider (inklusive anpassade leverantörer). Kod som villkorslöst kastar undantaget till InvalidDataException eller FileNotFoundException kan nu utlösa en InvalidCastException eller tyst felhandle dessa nya undantagstyper.
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Den här ändringen är en felkorrigering. Konfigurationsfilens I/O-fel är meningsfulla belastningsfel, och kod som registrerar ett OnLoadException återanrop förväntar sig att observera alla fel som inträffar när en konfigurationsfil läses in, inte bara parsningsfel. Mer information finns i dotnet/runtime#113964.
Rekommenderad åtgärd
- Om du har identifierat I/O-undantag från
FileConfigurationProvidereller en härledd typ med hjälp avTaskScheduler.UnobservedTaskExceptionflyttar du logiken till återanropetOnLoadException. - Kontrollera att alla motringningar som är registrerade i
OnLoadExceptionkan hantera undantag av alla typer, inte baraInvalidDataExceptionellerFileNotFoundException. Undvik ovillkorliga kast och använd mönstermatchning eller typkontroller i stället.