Ошибка в доступе LogParser

Я использую Logparser для разбора IIS Log и показа информации на веб-странице. В моей среде разработки все работает нормально, но после публикации приложения на сервере появляется следующая ошибка:

Не удалось получить фабрику класса COM для компонента с CLSID {8CFEBA94-3FC2-45CA-B9A5-9EDACF704F66} из-за следующей ошибки: 80070005 Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)).

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.UnauthorizedAccessException: получение фабрики классов COM для компонента с CLSID {8CFEBA94-3FC2-45CA-B9A5-9EDACF704F66} не выполнено из-за следующей ошибки: 80070005 Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)).

Что означает эта ошибка и как я могу решить эту проблему?

6 ответов

Решение

Создайте выделенный пул приложений для сайта и переключите его удостоверение на "Сетевые службы". Решил проблему для меня

IIS 7+ не может быть настроен для запуска 32-разрядных приложений. В пуле приложений перейдите в раздел "Дополнительные параметры" и включите 32-разрядные приложения.

Я столкнулся с той же проблемой, которую вы описали, и шаги, которые я предпринял для ее решения, включали:

  • Включение 32-битных приложений в пуле приложений
  • Из папок журналов (inetpub/logs/LogFiles/{site}, предоставляя доступ к удостоверению пула приложений
  • Копирование файлов LogParser.dll и Interop.MSUtil.dll в папку bin сайта

Эта ошибка возникает из-за отсутствия разрешений. Необходимо предоставить разрешение на чтение / запись для пользователей / гостей IIS в виртуальном каталоге.

Шаги, которые я использовал для решения проблемы, следующие:

  1. Перейти к IIS Manager
  2. Перейдите на нужный сайт
  3. включить аутентификацию ASP.NET для вашего веб-сайта по умолчанию

Это должно решить проблему с разрешениями.

Вам может потребоваться дать пользователю разрешение на запуск на DCOM-сервере. Конфигурация DCOM находится в Component Services, и вы можете видеть GUID для каждой записи, чтобы вы могли определить соответствующую запись.

Затем отредактируйте для него разрешения безопасности и предоставьте соответствующим пользователям разрешения на запуск и активацию, а также разрешения на доступ.

Я должен был попробовать три вещи:

1- Посмотрите, был ли LogParser.dll зарегистрирован с regsvr32.exe;
2- Измените разрешение для пула приложений на сетевую службу;
3- Принимать 32-битные приложения в пуле приложений;

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