Atul Shriram rane Ответов: 1

Ошибка функции загрузки Excel


Я реализовал функцию загрузки Excel, и она отлично работает на моей машине, но когда я развертываю ее на веб-сервере, она не работает, и в средстве просмотра событий я вижу ниже упоминание об ошибке:
Код C# :
HttpPostedFileBase file = Request.Files["UploadedFile"];

            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(file.FileName);
            Microsoft.Office.Interop.Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
            Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.UsedRange;
            int rowCount = xlRange.Rows.Count;
            int colCount = xlRange.Columns.Count


сведения об ошибке:

Код события: 3005
Сообщение о событии: произошло необработанное исключение.
Время проведения мероприятия: 28.11.2016 4: 11: 32 вечера
Время события (UTC): 28.11.2016 10:11: 32 вечера
Идентификатор события: eaefe3f8172941de9501e3120fbfa919
Последовательность событий: 106
События: 1
Подробный код события: 0

Информация о приложениях:
Домен приложения: /LM/W3SVC/11 / ROOT-1-131248445947899221
Уровень доверия: полный
Виртуальный Путь Приложения: /
Путь Приложения: E:\inetpub\wwwroot\XYZ.com\
Имя машины: XXXXXXX

Обрабатывать информацию:
Идентификатор процесса: 796
Название процесса: w3wp.exe
Имя учетной записи: XXXXXXXXXXXXXX

Информация об исключениях:
Тип исключения: COMException
Сообщение об исключении: получение фабрики COM-класса для компонента с CLSID {00024500-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: класс 80040154 не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
в системе.RuntimeTypeHandle.Метод createinstance(типа объектом типа runtimetype, publicOnly логический, Булев параметр nocheck, логическое и amp; canBeCached, RuntimeMethodHandleInternal&амп; конструктор, логическое и amp; bNeedSecurityCheck)
в System. RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
в System. RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
в системе.Активатор.Метод createinstance(type тип, логический тип непубличной)
в системе.Активатор.CreateInstance(тип type)
в "шевроне".PGMgr.Пользовательского интерфейса.В MVC.Контроллеры.Домашний контролер.Upload(FormCollection formCollection)
в lambda_method(закрытие , ControllerBase , объект[] )
в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 параметра)
в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 параметра)
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker. & lt;BeginInvokeSynchronousActionMethod & gt;b_ _ 39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
в системе.Веб.В MVC.Асинхронность.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(объекта iasyncresult asyncresult, к)
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.AsyncInvocationWithFilters. & lt;InvokeActionMethodFilterAsynchronouslyrecursive> b_ _ 3d()
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyrecursive>b__3f()
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyrecursive>b__3f()
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.&ЛТ;&ГТ;с__DisplayClass21.&ЛТ;BeginInvokeAction&ГТ;б__1е(объекта iasyncresult asyncresult, к)
at System.Web.Mvc. Controller.<BeginExecuteCore & gt;b_ _ 1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
в системе.Веб.В MVC.Асинхронность.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(объекта iasyncresult asyncresult, к)
в системе.Веб.В MVC.Контроллер.EndExecuteCore(объекта iasyncresult asyncresult, к)
в системе.Веб.В MVC.Асинхронность.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(объекта iasyncresult asyncresult, к)
at System. Web.Mvc.MvcHandler. & lt;BeginProcessRequest & gt;b_ _ 5(IAsyncResult asyncResult, ProcessRequestState innerState)
в системе.Веб.В MVC.Асинхронность.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(объекта iasyncresult asyncresult, к)
в System.Web.HttpApplication.CallHandlerExecutionStep.Системы.Веб.Класса HttpApplication.IExecutionStep.Выполнять()
в System.Web.HttpApplication.ExecuteStep (iexecutionstep step, Boolean& completedSynchronously)



Запросить сведения:
URL-адрес запроса: http://support-pgmgr-mcbu.chevron.com/Home/Upload
Путь запроса: /Home / Upload
Адрес хоста пользователя: XXXXXXXXXXXXX
Пользователей: ХХХХХХХХХ
Аутентифицируется: True
Тип Аутентификации: Negotiate
Имя учетной записи потока: XXXXXXXXXX

Информация о потоке:
Идентификатор резьбы: 15
Имя учетной записи потока: XXXXXXXXXXXXXX
Это олицетворение: ложь
Трассировка стека: at System.RuntimeTypeHandle.Метод createinstance(типа объектом типа runtimetype, publicOnly логический, Булев параметр nocheck, логическое и amp; canBeCached, RuntimeMethodHandleInternal&амп; конструктор, логическое и amp; bNeedSecurityCheck)
в System. RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
в System. RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
в системе.Активатор.Метод createinstance(type тип, логический тип непубличной)
в системе.Активатор.CreateInstance(тип type)
в "шевроне".PGMgr.Пользовательского интерфейса.В MVC.Контроллеры.Домашний контролер.Upload(FormCollection formCollection)
в lambda_method(закрытие , ControllerBase , объект[] )
в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 параметра)
в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 параметра)
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker. & lt;BeginInvokeSynchronousActionMethod & gt;b_ _ 39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
в системе.Веб.В MVC.Асинхронность.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(объекта iasyncresult asyncresult, к)
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.AsyncInvocationWithFilters. & lt;InvokeActionMethodFilterAsynchronouslyrecursive> b_ _ 3d()
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyrecursive>b__3f()
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyrecursive>b__3f()
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
в системе.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.&ЛТ;&ГТ;с__DisplayClass21.&ЛТ;BeginInvokeAction&ГТ;б__1е(объекта iasyncresult asyncresult, к)
at System.Web.Mvc. Controller.<BeginExecuteCore & gt;b_ _ 1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
в системе.Веб.В MVC.Асинхронность.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(объекта iasyncresult asyncresult, к)
в системе.Веб.В MVC.Контроллер.EndExecuteCore(объекта iasyncresult asyncresult, к)
в системе.Веб.В MVC.Асинхронность.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(объекта iasyncresult asyncresult, к)
at System. Web.Mvc.MvcHandler. & lt;BeginProcessRequest & gt;b_ _ 5(IAsyncResult asyncResult, ProcessRequestState innerState)
в системе.Веб.В MVC.Асинхронность.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(объекта iasyncresult asyncresult, к)
в System.Web.HttpApplication.CallHandlerExecutionStep.Системы.Веб.Класса HttpApplication.IExecutionStep.Выполнять()
в System.Web.HttpApplication.ExecuteStep (iexecutionstep step, Boolean& completedSynchronously)

Что я уже пробовал:

Мы используем "Microsoft.Офис.Взаимодействие.Превосходить"

1 Ответов

Рейтинг:
1

Mehdi Gholam

Excel interop [и interop в целом] не предназначен для использования в серверных средах (и вы должны установить MS Office на свой сервер в любом случае).

Попробуйте вместо этого использовать библиотеки, например : EPPlus-создание расширенных электронных таблиц Excel на сервере-Главная страница[^]