Esent LogFileCorrupt-Exception

Я использую библиотеку ManagedEsent для чтения данных из кэша Internet Explorer с помощью файла WebCacheV01.dat. Я получаю исключение ниже каждый раз, несмотря на изменение WebCacheV01.dat по отдельности с разных машин.

Microsoft.Isam.Esent.Interop.EsentLogFileCorruptException: "Файл журнала поврежден"

Кто-нибудь еще сталкивался с этим раньше? Как ты это сделал? Я приложил скриншот, чтобы показать, где выбрасывается исключение.

1 ответ

Решение

Здесь много чего происходит:

  • Создание Instance дорогой. Это нужно сделать один раз и использовать повторно. Каждый раз, когда вы создаете Instance он читает мегабайты файлов журнала, чтобы убедиться, что все было очищено.
  • Session не слишком дорого Если у вас есть приложение серверного масштаба, вам следует повторно использовать сеансы, но в небольшом масштабе это не имеет большого значения.
  • Вы не устанавливаете параметры в Instance, например, путь к файлу журнала, префикс файла журнала (я думаю, что его v01 для веб-кэша?)
  • Проверьте средство просмотра событий приложения Windows, ища категорию ESENT События. Точное местоположение файла журнала должно присутствовать в записях журнала событий.
  • Прямой доступ к этим файлам не поддерживается. Если вы измените файлы, веб-кеш может работать неправильно.
  • Если это для судебно-медицинской экспертизы, то откройте дело с MS и вовлеките людей, занимающихся судебной экспертизой. Должен быть канал, чтобы помочь сотрудникам правоохранительных органов выполнять свою работу.
  • Вы упомянули разные машины. Если вы копируете файлы с другого компьютера, то он может быть в другом формате, который старая версия Windows просто не может понять. esent.dll Можно читать старые файлы, но не файлы из будущего.

Надеюсь, это поможет,

-Мартин

Другие вопросы по тегам