Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
FileConfigurationProvideri jego typy pochodne (używane przez <Microsoft. Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile*>, <Microsoft. Extensions.Configuration.XmlConfigurationExtensions.AddXmlFile*> i <Microsoft. Extensions.Configuration.IniConfigurationExtensions.AddIniFile*>) przekazuje teraz błędy we/wy do OnLoadException wywołania zwrotnego oprócz analizowania błędów.
Wersja wprowadzona
.NET 11 (wersja zapoznawcza 7)
Poprzednie zachowanie
Wcześniej błędy we/wy, które wystąpiły po otwarciu pliku konfiguracji (na przykład z AddJsonFile, AddXmlFile, AddIniFilelub ponownego załadowania, gdy plik załadowany został zmieniony na dysku) nie zostały przekazane do FileLoadExceptionContextOnLoadException wywołania zwrotnego. Tylko błędy analizowania zostały przekazane do tego wywołania zwrotnego. Błędy we/wy były nieobserwowalne przy użyciu metody OnLoadException; zamiast tego można je zaobserwować przy użyciu metody UnobservedTaskException.
W konsekwencji Exception właściwość przekazana OnLoadException zawsze była właściwością InvalidDataException lub FileNotFoundExceptionFileLoadExceptionContext . Kod, który bezwarunkowo rzutuje wyjątek na jeden z tych typów, działał prawidłowo.
Nowe zachowanie
Począwszy od .NET 11, błędy we/wy są przekazywane do przekazanego FileLoadExceptionContext wywołania zwrotnegoOnLoadException. Błędy we/wy nie są już widoczne przy użyciu metody TaskScheduler.UnobservedTaskException, z wyjątkiem sytuacji, gdy nie OnLoadException zarejestrowano wywołania zwrotnego.
W związku Exception z tym właściwość on FileLoadExceptionContext może być teraz wyjątkiem dowolnego typu — najczęściej IOException, ale potencjalnie każdy wyjątek zgłaszany przez skonfigurowany IFileProvider (w tym dostawców niestandardowych). Kod, który bezwarunkowo rzuca wyjątek lub InvalidDataExceptionFileNotFoundException może teraz zgłaszać InvalidCastException lub dyskretnie błędnie pracować z tymi nowymi typami wyjątków.
Typ zmiany przełamującej
Ta zmiana jest zmianą behawioralną.
Przyczyna zmiany
Ta zmiana jest poprawką błędów. Błędy we/wy pliku konfiguracji są znaczącymi błędami ładowania, a kod rejestrujący OnLoadException wywołanie zwrotne oczekuje obserwowania wszystkich błędów występujących podczas ładowania pliku konfiguracji, a nie tylko analizowania błędów. Aby uzyskać więcej informacji, zobacz dotnet/runtime#113964.
Zalecana akcja
- Jeśli wykryto wyjątki we/wy z
FileConfigurationProviderlub typu pochodnego przy użyciuTaskScheduler.UnobservedTaskExceptionmetody , przenieś logikę do wywołania zwrotnegoOnLoadException. - Sprawdź, czy wszystkie wywołania zwrotne zarejestrowane w programie
OnLoadExceptionmogą obsługiwać wyjątki dowolnego typu, a nie tylkoInvalidDataExceptionlubFileNotFoundException. Unikaj rzutów bezwarunkowych i zamiast tego używaj dopasowywania wzorców lub kontroli typów.