2015-09-22 5 views
1

Справа, это заводит меня безумный. Это нормально работает с Excel 2013, но когда сайт публикуется на удаленном сервере с Excel 2010, он терпит неудачу. Из того, что я вижу, конфигурация DCOM такая же локально, как и удаленная.Excel 2010 вопросы взаимодействия

После борьбы с Excel 2010 и разрешений DCOM в течение часа теперь лучшее, что я получил это исключение: System.Runtime.InteropServices.COMException (0x80070BBC): Office has detected a problem with this file. To help protect your computer this file cannot be opened.

Это результат веб-приложения пытается открыть файл * .xls от местоположения он только что загрузил. Пул приложений работает под ApplicationPoolIdentity, и я установил разрешения для этого конкретного пула приложений под mmc -32 по адресу Launch and Activation Permissions, поэтому проблем с Excel нет. Что я думаю Я столкнулся с проблемой защищенного режима, так как файл определенно не поврежден.

Я перешел в настройки Excel и Trust Center и добавил место, где файл * .xls загружается (и впоследствии открывается) в качестве надежного местоположения. Если я открою файл на сервере хостинга (под моей учетной записью домена), я не получу защищенный блок просмотра в файле, однако, Идентификатор в конфигурации DCOM установлен на запускающего пользователя. Итак, что же это означает одну из следующих функций (или что-то я не перечисленных):

  1. Мне нужно, чтобы добавить это место в качестве доверенного на уровне групповой политики, потому что счет запуска фактического применения не имеет этого конфигурации в своем профиле?
  2. Мне нужно создать реальную учетную запись на сервере и использовать эту учетную запись в качестве Identity для запуска приложения?
  3. ...?

Просто для уточнения я уже вниз по конфигурации маршрута DCOM безопасности и смешных вопросов, с C:\Windows\System32\config\systemprofile\Desktop и C:\Windows\SysWOW64\config\systemprofile\Desktop. Конфигурация:

  • .NET 4.5 (классический трубопровод) приложение бассейн работает под ApplicationPoolIdentity
  • DCOM Config> Безопасность> Запуск и разрешение активации все готовы для этой конкретной личности (права доступа и разрешения конфигураций все готовы использовать По умолчанию)
  • Файл загружен правильно и отображается в месте назначения, открытие на самом сервере (под моей учетной записью домена) относится к доверенному местоположению и не дает предупреждения защищенного режима.
  • Процесс синтаксического анализа завершился с вышесказанным исключением.

Вот скриншот сборки Interop, которую я использую, если это уместно.

Excel Interop Assembly

ответ

1

Ok ...для тех, кто спотыкаясь по этому вопросу, я укусил пули и должен был сделать следующее:

  1. Создайте локальную учетную запись (AutomatedOffice в моем случае) и установить DCOM конфигурации для запуска Excel под этой учетной записью
  2. Войти, как выше учетной записи и изменить параметры Excel, чтобы добавить папку в корневой каталог приложения в доверенное место и отключить сообщения защищенного режима
  3. Разрешить «Сетевая служба» локально запускать процессы DCOM (через конфигурацию DCOM DCM, а не конфигурацию CLSID)
  4. Добавить разрешения NTFS для этой учетной записи на C: \ Windows [System32 | SYSWOW64] \ config \ systemprofile \ Пути к работе

Что было странно, после создания учетной записи, я получаю следующее исключение Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied., который был разрешен путем добавления HOST\Users и HOST\NetworkServices группы безопасности DCOM (только локальный !!!) настройки.