Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
FileConfigurationProvidere i relativi tipi derivati (usati da <Microsoft. Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile*>, <Microsoft. Extensions.Configuration.XmlConfigurationExtensions.AddXmlFile*>e <Microsoft. Extensions.Configuration.IniConfigurationExtensions.AddIniFile*>) inoltra ora gli errori di I/O al callback oltre all'analisi OnLoadException degli errori.
Versione introdotta
.NET 11 Preview 7
Comportamento precedente
In precedenza, gli errori di I/O che si sono verificati durante l'apertura di un file di configurazione (ad esempio, da AddJsonFile, AddIniFileAddXmlFile, o un ricaricamento attivato quando un file già caricato sul disco) non venivano inoltrati all'oggetto FileLoadExceptionContext passato al OnLoadException callback. Solo gli errori di analisi sono stati inoltrati a tale callback. Gli errori di I/O non sono stati osservabili usando OnLoadException; invece, erano osservabili usando UnobservedTaskException.
Di conseguenza, la Exception proprietà su FileLoadExceptionContext passato a OnLoadException è sempre un InvalidDataException oggetto o FileNotFoundException. Codice che esegue il cast incondizionato dell'eccezione a uno di questi tipi funziona correttamente.
Nuovo comportamento
A partire da .NET 11, gli errori di I/O vengono inoltrati al FileLoadExceptionContext metodo passato al OnLoadException callback. Gli errori di I/O non sono più osservabili tramite TaskScheduler.UnobservedTaskException, tranne quando non viene registrato alcun OnLoadException callback.
Di conseguenza, la Exception proprietà su FileLoadExceptionContext può ora essere un'eccezione di qualsiasi tipo, in IOExceptiongenere , ma potenzialmente qualsiasi eccezione generata dall'oggetto configurato IFileProvider (inclusi i provider personalizzati). Il codice che esegue il cast in modo incondizionato dell'eccezione a InvalidDataException o FileNotFoundException può ora generare un errore InvalidCastException o in modo invisibile all'utente per questi nuovi tipi di eccezione.
Tipo di cambiamento che interrompe la compatibilità
Questa modifica è una modifica funzionale.
Motivo della modifica
Questa modifica è una correzione di bug. Gli errori di I/O dei file di configurazione sono errori di carico significativi e il codice che registra un OnLoadException callback prevede di osservare tutti gli errori che si verificano durante il caricamento di un file di configurazione, non solo l'analisi degli errori. Per altre informazioni, vedere dotnet/runtime#113964.
Azione consigliata
- Se sono state rilevate eccezioni di I/O da
FileConfigurationProvidero da un tipo derivato usandoTaskScheduler.UnobservedTaskException, spostare tale logica nelOnLoadExceptioncallback. - Verificare che qualsiasi callback registrato in
OnLoadExceptionpossa gestire le eccezioni di qualsiasi tipo, non soloInvalidDataExceptionoFileNotFoundException. Evitare cast non condizionali e usare invece controlli di criteri o tipi.