Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка под ASP.NET > Ошибка при работе с excel |
Автор: oleksergey 4.5.2009, 19:25 |
Всем добрый вечер. Возникла проблема при работе с excel. Выводится такое сообщение об ошибке: Сведения об исключении: System.UnauthorizedAccessException: Сбой при получении производства объектов класса COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} в результате следующей ошибки: 80070005. Попробывал поэкспериментировать с правами DCOM. Появилась новое исключение: Сведения об исключении: System.Runtime.InteropServices.COMException: Microsoft Office Excel cannot open or save any more documents because there is not enough available memory or disk space. • To make more memory available, close workbooks or programs you no longer need. • To free disk space, delete files you no longer need from the disk you are saving to Кто сталкивался с такой проблемой, помогите пожалуйста. |
Автор: Любитель 5.5.2009, 10:17 |
![]() Во-первых, MS настоятельно не рекомендует использовать из-под веб-а Office Automation. Если можно без этого обойтись - лучше обойтись. Во-вторых, приведи минимальный код, на котором репродьюсится твоя ошибка. В-третьих, есть такая "особенность" при работе с excel automation из-под ASPNET-а: насчёт завершения приложения. Классических workbook.Close, application.Quit здесь не хватит. Необходимо вызывать Marshal.ReleaseComObject для всех используемых экселевских объектов. Как следствие - писать что-то типа worksheet.Sheets[1] вообще нельзя. Вначале надо сохранить референс на коллекцию воркшитов, потом получить воркшит. Ну и в конце явно зарелизить оба. Ну, само собой можно написать хелпер, удобно собирающий все эти ссылки (насколько это возможно) и релизищий их по явному вызову (ну и IDisposable для удобства можно реализовать). В-четвёртых, не надо забывать об имперсонейте веб-сайта. Быть может, можно сделать-таки ASPNET-а более-менее полноценным юзером (в плане Office Automation), но.. вообщем в своём время это сделать не удалось. Впрочем, для экселя (если, конечно, нет внедрённых OLE-объектов) вполне хватит прошлого совета. |
Автор: oleksergey 6.5.2009, 00:25 |
Проблема возникает при создании объекта. Excel.ApplicationClass m_app = new Excel.ApplicationClass(); |
Автор: Любитель 6.5.2009, 01:05 |
Процессы экселя есть на сервере? Добавлено через 2 минуты и 13 секунд И насчёт этого - локальный запуск и активация для "Microsoft Excel Application" пользователю ASPNET разрешены? |
Автор: oleksergey 6.5.2009, 09:58 | ||
процесы есть конечно. локальный запуск если разрешить, то появляется второе исключение о котором я писал. |
Автор: oleksergey 6.5.2009, 18:20 | ||||
убивание процесов ничего не меняет. а места на диске более чем достаточно. |
Автор: Любитель 6.5.2009, 18:25 |
Ок. Какая версия офиса на сервере? И какая система? |
Автор: oleksergey 6.5.2009, 18:27 | ||
Office стоит 2007, а ОС Windows Vista |