ASP.Net Com-InterOp Excel Generation проблема при хостинге - PullRequest
10 голосов
/ 01 февраля 2012

В моем приложении ASP.Net я генерирую файл Excel, используя MsExcel Object Libby (Com-InterOp).Приложение отлично работало в VS dev.environment.

Но когда я размещаю его на сервере, я получаю следующую ошибку, если я не зарегистрирован на сервере через подключение к удаленному рабочему столу.

"Не удалось получить фабрику класса COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} из-за следующей ошибки: 8000401a Не удалось запустить процесс сервера, поскольку настроенный идентификатор указан неверно. Проверьтеимя пользователя и пароль. (Исключение из HRESULT: 0x8000401A). "

Я также установил конфигурации DCOM.Странно то, что по крайней мере один пользователь должен быть подключен к серверу через RDC.Если так, то каждый может генерировать отличные результаты.Если не выше, выдает ошибку.В остальном функционал приложения работает нормально.

Сервер - Windows Server 2008, IIS7.И пользователи, подключающие приложение через VPN.

Кто-нибудь сталкивался с подобной проблемой?

Заранее спасибо.

Ответы [ 8 ]

10 голосов
/ 10 декабря 2013

В конце я создал пользователя с правами администратора на компьютере с веб-службой, а затем установил этого пользователя, как показано на экране ниже:

enter image description here

Это сработало,И нам не нужно было блокировать компьютер.

4 голосов
/ 01 февраля 2012

Проблема в том, что для установленного для приложения «Идентичность» отсутствуют достаточные привилегии. Это может быть по нескольким причинам, но прежде чем мы перейдем к ним, давайте проверим, где настроено это удостоверение. Откройте Панель управления, Администрирование и дважды щелкните Службы компонентов. Разверните Приложения COM +, щелкните правой кнопкой мыши нужное приложение, нажмите Свойства и перейдите на вкладку Удостоверение.

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

Если для этого идентификатора установлено значение «Интерактивный пользователь», вышеуказанная ошибка может возникать, когда пользователь, вошедший в систему на данный момент на компьютере, является поном или когда никто не вошел в систему вообще. Это основная причина, по которой эта ошибка никогда не обнаруживается при разработке ... пользователь, разрабатывающий приложение COM + и полностью контролирующий машину, также является пользователем, вошедшим в систему и работающим как интерактивный пользователь.

Вы должны убедиться, что используете локальную учетную запись пользователя с достаточными привилегиями, если этого требует ваша DLL. Пользователь, который использует VPN, может столкнуться с трудностями из-за этого.

3 голосов
/ 29 августа 2012

Просто установите Identity для этого пользователя и введите имя пользователя и пароль пользователя с достаточными правами. В моем случае я вошел в группу опытных пользователей.

3 голосов
/ 01 февраля 2012

Использование Office Interop на сервере НЕ поддерживается MS - см. http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2

Поскольку в Windows Vista MS введено несколько мер безопасности, которые препятствуют работе службы Windows (IIS является лишь частным случаем этого)от выполнения «настольных» вещей ... что означает, что вам придется обойти несколько мер безопасности (одно только имитация не поможет!), чтобы заставить его работать (НЕ рекомендуется!).

ОБРАТИТЕ ВНИМАНИЕ, что встроенный веб-сервер VS НЕ имитирует поведение IIS в отношении разрешений и т. Д.

Для работы с Excel в сценарии сервера существует несколько вариантов (бесплатных и коммерческих):

Я могу порекомендовать Aspose.Cells и Flexcel ... не пробовал SpreadsheetGear , но слышал + читал много хорошего об этом.

Свободными вариантами (хотя только для формата xlsx!) Являются, например, OpenXML 2 от MS и EPPlus .

3 голосов
/ 01 февраля 2012

Microsoft не рекомендует и не поддерживает серверную автоматизацию приложения Excel в серверной среде, такой как ASP.NET, см. здесь . Лучше использовать пакет Excel плюс (xslx) или библиотека Excel (xls)

1 голос
/ 18 ноября 2013

Я провел исследование по этой проблеме, которое у меня тоже было. Я сделал это: http://forums.asp.net/t/1093228.aspx

Я не знаю, насколько это хорошее решение, но оно работает. :)

Введите dcomcnfg в cmd

Перейдите в Службы компонентов -> Мой компьютер -> Безопасность Com -> Запустить и Активировать разрешения -> Изменить по умолчанию -> Добавить ...

Теперь добавьте сетевую службу и разрешите все разрешения для нее.

0 голосов
/ 29 января 2015

У меня такая же ситуация при попытке прочитать загруженный файл Excel.Давайте попробуем эти шаги.Это работает для меня.

  1. Создайте локальную учетную запись (пароль и галочка не устарели)
  2. Добавьте созданную учетную запись на шаге 1 в группу IIS_IUSRS
  3. Измените свою сетьconfig ...
  4. Выйдите из системы и попробуйте.

Надеюсь, это полезно для вас.

0 голосов
/ 08 февраля 2012

Спасибо за @ Rofans.Net, основываясь на предоставленных им точках, мы определили, что сервер, на котором размещалось приложение, находился в стороннем центре обработки данных, и на нем все время не входил пользователь.Только пользователи, вошедшие в систему, являются пользователями RDC.

Таким образом, нам удалось зарегистрировать пользователя всеми способами и поставить компьютер в заблокированное состояние, чтобы во всех случаях он входил в систему.

Это единственный способ, который мы нашли, и если кто-то нашел лучший способ, пожалуйста, добавьте.

Спасибо.

...