ASP.NET не может создать компонент ActiveX - PullRequest
5 голосов
/ 04 декабря 2009

У меня есть приложение ASP.NET, которое позволяет пользователям ежемесячно экспортировать отсутствия своих сотрудников в Microsoft Excel. Приложение в настоящее время генерирует следующее исключение

Исключение: невозможно создать компонент ActiveX.

со следующей трассировкой стека

System.Exception: не удается создать компонент ActiveX. в Microsoft.VisualBasic.Interaction.CreateObject (String ProgId, String ServerName) в HR.ManagerSummary.ExportToExcel () в H: \ Development \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Time \ ManagerSummary.aspx.vb: строка 935 в HR.ManagerSummary.btnExcel_Click (Отправитель объекта, EventArgs e) в H: \ Development \ pagec \ Visual Studio 2005 \ Projects \ HR \ ysnet2 \ Time \ ManagerSummary.aspx.vb: строка 891 в System.Web.UI.WebControls.Button.OnClick (EventArgs e) в System.Web.UI.WebControls.Button.RaisePostBackEvent (String eventArgument) в System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) в System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument) в System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) в System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)

Код не выполняется в строке CreateObject.

    'Create the Excel object
    Dim objXL As Object = CreateObject("Excel.Application") ' New Microsoft.Office.Interop.Excel.Application
    Dim objWB As Object = objXL.Workbooks.Add
    Dim objWS As Object = objWB.Worksheets(1)

Я установил разрешение в DCOM Config для приложения Microsoft Excel для учетной записи IUSR_, но это не решило проблему. Любые идеи будут с благодарностью.

Приветствия

Джеймс

Ответы [ 3 ]

5 голосов
/ 15 марта 2012

После переноса наших приложений ASP.NET на новое оборудование я продолжил исследовать эту проблему и нашел решение.

Чтобы решить эту проблему, откройте «Службы компонентов» в разделе «Администрирование» и выполните следующие действия:

  • Службы компонентов -> Компьютеры -> Мой компьютер -> Конфигурация DCOM -> Приложение Microsoft Excel
  • Щелкните правой кнопкой мыши Приложение Microsoft Excel -> Свойства -> вкладка Безопасность
  • Нажмите «Настроить» для «Разрешения на запуск и активацию» -> Изменить -> Добавить
  • Введите «СЕТЬ СЕРВИС», нажмите «Проверить имена», нажмите OK
  • Разрешить «Локальный запуск» и «Локальная активация» для «СЕТЕВОЙ СЕРВИС», затем нажать ОК
  • Выберите «Настроить» для «Права доступа» -> «Редактировать» -> «Добавить»
  • Введите «СЕТЬ СЕРВИС», нажмите «Проверить имена», нажмите OK
  • Разрешить "Локальный доступ" для "СЕТЕВОЙ СЕРВИС", затем нажать ОК
  • Нажмите OK

Приложение ASP.NET теперь может успешно создавать рабочий лист Microsoft Excel, содержащий экспортированные данные.

0 голосов
/ 07 декабря 2009

SpreadsheetGear for .NET позволит вам сохранять рабочие книги xls и xlsx непосредственно в поток ответов с помощью IWorkbook.SaveToStream. Это все безопасно управляемый код C #, поэтому вам не нужно запускать что-либо от имени администратора, и вы не столкнетесь с проблемами, которые Excel COM Interop создает на сервере ASP.NET.

Вы можете увидеть несколько простых примеров отчетов ASP.NET Excel (C # и VB) с помощью SpreadsheetGear здесь и загрузить бесплатную пробную версию здесь , если хотите попробовать сами.

Отказ от ответственности: я владею SpreadsheetGear LLC

0 голосов
/ 04 декабря 2009

Вы зарегистрировали ActiveX на сервере?

http://support.microsoft.com/kb/146219

...