Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Empfohlene Maßnahme
- Wenn Sie E/A-Ausnahmen von
FileConfigurationProvideroder einem abgeleiteten Typ erkanntTaskScheduler.UnobservedTaskExceptionhaben, verschieben Sie diese Logik in denOnLoadExceptionRückruf. - Stellen Sie sicher, dass alle in
OnLoadExceptionregistrierten Rückrufen Ausnahmen von jedem Typ verarbeiten können, nicht nurInvalidDataExceptionoderFileNotFoundException. Vermeiden Sie bedingungslose Umwandlungen, und verwenden Sie stattdessen Musterabgleichs- oder Typüberprüfungen.