Ошибка в доступе 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 в виртуальном каталоге.
Шаги, которые я использовал для решения проблемы, следующие:
- Перейти к IIS Manager
- Перейдите на нужный сайт
- включить аутентификацию ASP.NET для вашего веб-сайта по умолчанию
Это должно решить проблему с разрешениями.
Вам может потребоваться дать пользователю разрешение на запуск на DCOM-сервере. Конфигурация DCOM находится в Component Services, и вы можете видеть GUID для каждой записи, чтобы вы могли определить соответствующую запись.
Затем отредактируйте для него разрешения безопасности и предоставьте соответствующим пользователям разрешения на запуск и активацию, а также разрешения на доступ.
Я должен был попробовать три вещи:
1- Посмотрите, был ли LogParser.dll зарегистрирован с regsvr32.exe;
2- Измените разрешение для пула приложений на сетевую службу;
3- Принимать 32-битные приложения в пуле приложений;