Не удалось получить фабрику класса COM для компонента с CLSID {бла-бла-бла} из-за следующей ошибки: 80070005 Доступ запрещен - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть WebService, написанный на VS2013 C #, который включает в себя встроенную сборку с именем StatConnectorSrv.StatConnectorSrv взаимодействует со сторонней программой под названием StatConnDCOM для запуска другой программы с именем «R.»Служба работает на Windows Server 2016 с IIS 10. Служба работает нормально вплоть до момента инициализации StatConnector.Я получаю сообщение об ошибке отказа в доступе, отображаемое в заголовке вопросаКонсольная тестовая программа, которая использует StatConnector, прекрасно работает на сервере, поэтому проблема заключается в получении моего кода веб-службы для запуска DLL StatConnector.Я использую 32-разрядные версии StatConnDCOM и R.

Включены 32-разрядные процессы в IIS Включена анонимная проверка подлинности в IIS (для параметра «Определенный пользователь - IUSR») IIS \ AppPool \ Веб-сайт по умолчанию \ Advanced \ Process Model\ Identity: установка на Network Service или ApplicationPoolIdentity не помогает.В разделе Службы компонентов \ StatConnectorSrv: предоставлены полные разрешения анонимного пользователя IIS для разрешения на запуск, активацию и доступ

Служба считывает сообщение XML с входными переменными, использует StatConnDCOM для выполнения некоторых вычислений через R, а затем возвращает сообщение XML сРезультаты.Код веб-сервиса не может инициализировать StatConnDCOM (но StatConnDCOM работает нормально, когда я вызываю его с помощью консольной программы)

1 Ответ

0 голосов
/ 24 июня 2019

В двух словах проблема заключалась в том, что моему веб-сервису WCF, работающему на IIS10, требовалось разрешение на выполнение 32-разрядного сервера вне процесса.

Функциональные конфигурации IIS: AppPool \ DefaultWebSite должен быть установлен в «Классический»;
ISS \ Веб-сайт по умолчанию \ Аутентификация: анонимная аутентификация включена;

IIS \ Пулы приложений \ Веб-сайт по умолчанию: Режим управляемого трубопровода: Классический; Разрешить 32-битные приложения: True; Идентификационные данные: локальная система;

Последний бит "Локальная система" - это то, что я ошибся

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...