Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
FileConfigurationProvideren de afgeleide typen (gebruikt door <Microsoft. Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile*>, <Microsoft. Extensions.Configuration.XmlConfigurationExtensions.AddXmlFile*> en <Microsoft. Extensions.Configuration.IniConfigurationExtensions.AddIniFile*>) stuurt nu I/O-fouten door naar de OnLoadException callback, naast parseringsfouten.
Geïntroduceerde versie
.NET 11 preview 7
Vorig gedrag
Eerder werden I/O-fouten die zijn opgetreden bij het openen van een configuratiebestand (bijvoorbeeld van AddJsonFile, AddXmlFile, AddIniFileof een herlaadbewerking geactiveerd wanneer een al geladen bestand op schijf is gewijzigd) niet doorgestuurd naar de FileLoadExceptionContext doorgegeven aan de OnLoadException callback. Alleen parseringsfouten zijn doorgestuurd naar die callback. I/O-fouten waren niet zichtbaar met behulp van OnLoadException; in plaats daarvan waren ze waarneembaar met behulp van UnobservedTaskException.
Als gevolg hiervan was de Exception eigenschap FileLoadExceptionContext waaraan is doorgegeven OnLoadException altijd een InvalidDataException of FileNotFoundException. Code die de uitzondering voorwaardelijke cast naar een van deze typen correct werkte.
Nieuw gedrag
Vanaf .NET 11 worden IO-fouten doorgestuurd naar de FileLoadExceptionContext doorgegeven aan de OnLoadException callback. IO-fouten kunnen niet meer worden waargenomen met behulp van TaskScheduler.UnobservedTaskException, behalve wanneer er geen OnLoadException callback is geregistreerd.
Als gevolg hiervan kan de Exception eigenschap FileLoadExceptionContext nu een uitzondering van elk type zijn, meestal IOException, maar mogelijk elke uitzondering die wordt gegenereerd door de geconfigureerde IFileProvider (inclusief aangepaste providers). Code waarmee de uitzondering InvalidDataException onvoorwaardelijke wordt omgezet of FileNotFoundException die deze nieuwe uitzonderingstypen op de achtergrond kan weggooien InvalidCastException .
Type van brekende verandering
Deze wijziging is een gedragswijziging.
Reden voor wijziging
Deze wijziging is een foutoplossing. IO-fouten in het configuratiebestand zijn zinvolle laadfouten en code waarmee een OnLoadException callback wordt geregistreerd, verwacht dat alle fouten die optreden terwijl een configuratiebestand wordt geladen, niet alleen parseringsfouten worden waargenomen. Zie dotnet/runtime#113964 voor meer informatie.
Aanbevolen actie
- Als u IO-uitzonderingen van
FileConfigurationProviderof een afgeleid type hebt gedetecteerd met behulpTaskScheduler.UnobservedTaskExceptionvan, verplaatst u die logica naar deOnLoadExceptioncallback. - Controleer of een callback die is geregistreerd,
OnLoadExceptionuitzonderingen van elk type kan verwerken, niet alleenInvalidDataExceptionofFileNotFoundException. Vermijd onvoorwaardelijke casts en gebruik in plaats daarvan patroonkoppelingen of typecontroles.