ASP.NET Не удается создать ActiveX-компонент
-
13-09-2019 - |
Вопрос
У меня есть ASP.NET приложение, которое позволяет пользователям экспортировать данные об отсутствии своих сотрудников каждый месяц в Microsoft Excel.В данный момент приложение генерирует следующее исключение
Исключение:Не удается создать ActiveX-компонент.
со следующей трассировкой стека
Система.Исключение:Не удается создать ActiveX-компонент.в Microsoft.VisualBasic.Взаимодействие.CreateObject(строковый ПрогИд, строковое имя_сервера) в HR.ManagerSummary.ExportToExcel() в H:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2 ime\ManagerSummary.aspx.vb: строка 935 в HR.ManagerSummary.btnExcel_Click(отправитель объекта, EventArgs e) в H:\Development\pagec\Visual Studio 2005\Projects\HR\ysnet2 ime\ManagerSummary.aspx.vb: строка 891 в System.Web.UI.WebControls.Кнопка.OnClick(EventArgs e) в System.Web.UI.WebControls.Кнопка.Вызовите postbackevent(String eventArgument) в System.Web.UI.WebControls.Кнопка.System.Web.UI.IPostBackEventHandler.Вызовите postbackevent(строковый аргумент события) в System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler SourceControl, строка eventArgument) в System.Web.UI.Page.Поднимите postbackevent(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_, но это не решило проблему.Мы будем очень признательны за любые идеи.
Ваше здоровье
Джеймс
Решение
После переноса наших приложений ASP.NET на новое оборудование я продолжил изучение этой проблемы и нашел решение.
Чтобы устранить проблему, откройте "Службы компонентов" из административных инструментов и выполните следующие действия:
- Службы компонентов -> Компьютеры -> Мой компьютер -> Конфигурация DCOM -> Приложение Microsoft Excel
- Щелкните правой кнопкой мыши приложение Microsoft Excel -> Свойства -> Вкладка Безопасность
- Нажмите Настроить для получения "Разрешений на запуск и активацию" -> Редактировать -> Добавить
- Введите "СЕТЕВАЯ СЛУЖБА", нажмите "Проверить имена", нажмите "ОК".
- Разрешите "Локальный запуск" и "Локальную активацию" для "СЕТЕВОЙ СЛУЖБЫ", затем нажмите "ОК".
- Выберите Настроить для "Прав доступа" -> Редактировать -> Добавить
- Введите "СЕТЕВАЯ СЛУЖБА", нажмите "Проверить имена", нажмите "ОК".
- Разрешите "Локальный доступ" для "СЕТЕВОЙ СЛУЖБЫ", затем нажмите "ОК".
- Нажмите кнопку ОК
ASP.NET Теперь приложение может успешно создать рабочий лист Microsoft Excel, содержащий экспортированные данные.
Другие советы
Вы зарегистрировали ActiveX на сервере?
Устройство электронных таблиц для .NET это позволит вам сохранять рабочие книги xls и xlsx непосредственно в поток ответов с помощью IWorkbook.SaveToStream.Все это безопасный управляемый код на C #, поэтому нет необходимости запускать что-либо от имени администратора, и вы не столкнетесь с проблемами, которые возникают при взаимодействии Excel COM на сервере ASP.NET.
Вы найдете несколько простых примеров ASP.NET отчетов Excel (C# и VB) с помощью SpreadsheetGear здесь и скачайте бесплатную пробную версию здесь если вы хотите попробовать это сами.
Отказ от ответственности:Я владелец компании SpreadsheetGear LLC