Я знаю, что не могу обработать это исключение и не должен; вот почему это приводит к сбою приложения. Я могу проверить журнал в средстве просмотра событий. Я тоже не хочу обрабатывать это исключение; Я просто хочу поймать это, чтобы можно было написать журнал, а затем позволить приложению умереть любым способом. Так что сбой приложения здесь не моя проблема. Мне нужно написать журнал до сбоя, чтобы мне не нужно было заходить в средство просмотра событий, чтобы проверить, что пошло не так.
Я нашел полезными следующие вопросы:
Как обрабатывать AccessViolationException
Надежная обработка исключений поврежденного состояния в .NET Core
Как перехватить AccessViolationException в .net core 2.0
Есть и другие несколько вопросов по переполнению стека, в которых говорится об этой проблеме; но все они относятся к старой .NET Framework.
В более старых версиях .NET Framework в app.config можно было установить параметр:
Код: Выделить всё
Существует также атрибут [HandleProcessCorruptedStateExceptions], который устарел в .NET 8.
Другой атрибут [SecurityCritical] также можно использовать в соответствии с ответами на эти вопросы; но для этого требуется полное доверие, что не всегда возможно.
Способ с использованием переменных среды, описанный в одном из вопросов, также не работает.
Поэтому единственный оставшийся вариант — HeritageCorruptedStateExceptionsPolicy. Я хочу использовать это в своем приложении, ориентированном на .NET 8. Как и где я могу установить этот параметр в .NET 8? В .NET 8 нет файла app.config. Подходит ли .runtimeconfig.json? И все же, как это там настроить?
Подробнее здесь: https://stackoverflow.com/questions/799 ... n-in-net-8
Мобильная версия