FileConfigurationSource.OnLoadException-Rückruf wird für E/A-Fehler aufgerufen.

FileConfigurationProviderund die abgeleiteten Typen (verwendet von <Microsoft. Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile*>, <Microsoft. Extensions.Configuration.XmlConfigurationExtensions.AddXmlFile*>, und <Microsoft. Extensions.Configuration.IniConfigurationExtensions.AddIniFile*>) leiten nun E/A-Fehler zusätzlich zu Analysefehlern an den OnLoadException Rückruf weiter.

Eingeführt in Version

.NET 11 Vorschau 7

Bisheriges Verhalten

Zuvor wurden E/A-Fehler, die beim Öffnen einer Konfigurationsdatei (z. B. von AddJsonFile, , , AddIniFileoder einem Neuladen ausgelöst wurden, wenn eine bereits geladene Datei auf dem Datenträger geändert wurde) nicht an den FileLoadExceptionContextOnLoadException übergebenen AddXmlFileRückruf weitergeleitet. Nur Analysefehler wurden an diesen Rückruf weitergeleitet. E/A-Fehler konnten nicht mithilfe von OnLoadExceptionUnobservedTaskException

Folglich war die Exception übergebene OnLoadException Eigenschaft FileLoadExceptionContext immer ein InvalidDataException oder FileNotFoundException. Code, der die Ausnahme bedingungslos in einen dieser Typen umgibt, funktionierte ordnungsgemäß.

Neues Verhalten

Ab .NET 11 werden E/A-Fehler an den FileLoadExceptionContextOnLoadException übergebenen Rückruf weitergeleitet. E/A-Fehler können nicht mehr mithilfe von TaskScheduler.UnobservedTaskExceptionE/A beobachtet werden, außer wenn kein OnLoadException Rückruf registriert ist.

Daher kann die Exception Eigenschaft "On FileLoadExceptionContext " nun eine Ausnahme eines beliebigen Typs sein – am häufigsten IOException, aber potenziell jede Ausnahme, die von der konfigurierten IFileProvider (einschließlich benutzerdefinierter Anbieter) ausgelöst wird. Code, der die Ausnahme InvalidDataException bedingungslos umgibt oder FileNotFoundException jetzt einen InvalidCastException oder im Hintergrund falsch behandelten neuen Ausnahmetypen auslösen kann.

Art der einschneidenden Änderung

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

Diese Änderung ist ein Fehlerkorrektur. Konfigurationsdatei-E/A-Fehler sind aussagekräftige Ladefehler, und Code, der einen OnLoadException Rückruf registriert, erwartet, dass alle Fehler beobachtet werden, die auftreten, während eine Konfigurationsdatei geladen wird, nicht nur Analysefehler. Weitere Informationen finden Sie unter dotnet/runtime#113964.

  • Wenn Sie E/A-Ausnahmen von FileConfigurationProvider oder einem abgeleiteten Typ erkannt TaskScheduler.UnobservedTaskExceptionhaben, verschieben Sie diese Logik in den OnLoadException Rückruf.
  • Stellen Sie sicher, dass alle in OnLoadException registrierten Rückrufen Ausnahmen von jedem Typ verarbeiten können, nicht nur InvalidDataException oder FileNotFoundException. Vermeiden Sie bedingungslose Umwandlungen, und verwenden Sie stattdessen Musterabgleichs- oder Typüberprüfungen.

Betroffene APIs