Как развернуть COM-объект Microsoft.Office.Interop в IIS, чтобы моя ссылка на службу C # WCF работала? - PullRequest
0 голосов
/ 27 июля 2010

Я получаю сообщение об ошибке при попытке запустить мое веб-приложение из IIS 7 на моем локальном компьютере в отношении Microsoft.Office.Interop.Outlook, похожее на следующее ...

Не удалось получить фабрику класса COM для компонента с CLSID {0006F03A-0000-0000-C000-000000000046} из-за следующей ошибки: 80070005 Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)).

Когда я запускаю это же веб-приложение из VS2010 и Cassini, у меня нет проблем.

Когда я запускаю веб-приложение из IIS 7, я указываю свой VS2010 на виртуальный каталог IIS. На самом деле у меня даже было VS2010 создать виртуальный каталог. Таким образом, я могу отладить VS2010 и собрать ошибку, которую я написал здесь.

Я зашел в файл Microsoft.Office.Interop.Outlook.dll и дал ВСЕМ читать, писать, изменять и удалять. Просто чтобы исключить безопасность.

Существуют ли другие шаги при обращении к библиотекам Microsoft.Office.Interop? Должен ли я настроить что-то по этому поводу по-другому. Снова переключитесь обратно на работу в Кассини и никаких проблем.

Ответы [ 3 ]

4 голосов
/ 16 марта 2012

Нашли решение, Выдавать себя за пользователя, обладающего правами на создание экземпляров COM-компонентов.

Добавьте это в свой web.config

<system.web>
  <compilation debug="true" targetFramework="4.0" />
  <identity impersonate="true" userName="domain\id" password="psswd"/>
  <authentication mode="Windows"> </authentication>
</system.web>
2 голосов
/ 28 июля 2010

На моем сервере установлен и работает SharePoint под учетной записью «Сетевая служба».Это будет скрытая учетная запись, которая обычно не позволяет запускать COM-объекты.Если вы заходите в IIS и видите, какой пул приложений он использует (в разделе «Дополнительные настройки»).Затем проверьте идентичность этого пула.Друг порекомендовал нам запустить наш пул приложений SharePoint (и другие службы) под именованной учетной записью (например, [домен] \ svcSharepoint), чтобы вы могли явно дать разрешение.В противном случае учетная запись сетевой службы будет отображаться как [домен] [имя компьютера] $ (обратите внимание на символ $ в конце, означающий «скрытая учетная запись»).

Еще один фактор будет, если вы установите его на сервере2008 R2, потому что UAC намного сильнее и наверняка откажется от такого взаимодействия.Отключение UAC немного рискованно, но может стать победителем.

Последний фактор - проверка настроек DCOM для этого COM-объекта.[Меню Пуск, Инструменты администратора] [Службы компонентов] [Конфигурация DCOM].Найти Outlook по имени или по GUID, Свойства, Безопасность.

0 голосов
/ 27 июля 2010

Если на самом деле происходит нарушение прав доступа в вашем приложении, и это является причиной вашей проблемы, вы можете развернуть ресурс вместе с вашим приложением, просто установив ссылку для копирования в каталог bin. Это можно сделать, выбрав ссылку в обозревателе решений, перейдя к свойствам и изменив для свойства «Копировать локально» значение true.

...