Excel Com Interop ASP.Net Невозможно записать файл на диск. Права доступа? - PullRequest
0 голосов
/ 04 декабря 2009

У меня есть довольно простая веб-форма, которая позволяет пользователям выбирать отчеты, один конкретный отчет, который они хотят получить в xls с красивым форматированием вместо CSV. Я заполнил отчет с помощью COM INTEROP с Excel 2007. Он работает на моей локальной машине и может записать файл, но на веб-сервере не удается с этой ошибкой:

Microsoft Office Excel не может открывать или сохранять больше документов, так как недостаточно памяти или дискового пространства.

• Чтобы освободить больше памяти, закройте рабочие книги или программы, которые вам больше не нужны.

• Чтобы освободить место на диске, удалите файлы, которые вам больше не нужны, с диска, на который вы сохраняете.

На сервере достаточно дискового пространства, так что я не думаю, что это ... может ли это быть проблемой с разрешениями? Я расширил учетные записи ASPNET и NETWORK SERVICE, чтобы иметь возможность записи и изменения доступа к папке, в которую мы сохраняем отчеты, - но все равно не радуюсь. Есть идеи?

Нужно ли вызывать объект com с определенной учетной записью пользователя или, возможно, повысить уровень вызовов взаимодействия до учетной записи администратора? Есть идеи как это сделать?

Ответы [ 3 ]

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

Извините, ребята, разобрались.

Серж, ты на полпути. В итоге я запустил Excel в качестве администратора:

в компонентных службах выберите приложение Excel и выберите администратора, который запускает его. Кажется, работает нормально на неделю использования он получит:)

Спасибо всем!

1 голос
/ 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

вы можете использовать олицетворение для вашего процесса ASPNET; Вот некоторая информация и пример того, как это сделать: уничтожение процесса win из консольного приложения C #: как установить разрешения? больше информации о олицетворении Как реализовать олицетворение в приложении ASP.NET

...