Создание файлов Excel в ASP на IIS7.5 - PullRequest
1 голос
/ 27 января 2011

В существующем веб-приложении, которое я поддерживаю, есть страница, которая используется для создания электронной таблицы Excel для некоторых данных.На веб-сервере установлен Excel 2002 (такой старый ...), и он использует автоматизацию объекта Excel для выполнения этой работы.

Я полностью осознаю, что подобная автоматизация Excel не рекомендуется Microsoft, ноэтот способ в настоящее время работает, и мне никогда не выделяется время, чтобы изменить это.

Вот пример кода

Dim xlApp, xlBook, xlSheet

'create the Application Object and workbook object
Set xlApp = Server.CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets.Add

'turn off any alerts
xlApp.DisplayAlerts = False
xlApp.Visible = False
xlApp.ScreenUpdating = False
xlApp.DisplayFormulaBar = True
xlApp.CommandBars("Standard").Visible = True
xlApp.CommandBars("Formatting").Visible = True
xlApp.CommandBars("Chart").Visible = True
xlApp.CommandBars("Control Toolbox").Visible = True

xlSheet.Cells(1, 1).Value = "Test"

xlApp.ScreenUpdating = True

xlApp.ActiveWorkbook.SaveAs ("C:\Temp\Test.xls"), -4143
xlApp.Quit

Set xlApp = Nothing

Веб-сервер является сервером Windows 2003,работает IIS6, и все работает счастливо.Однако в настоящее время мы выполняем обновление до использования серверов Windows 2008, работающих под управлением IIS7.5, и приведенный выше код больше не работает.Возвращаемое сообщение выглядит следующим образом:

Microsoft Excel error '800a03ec' 

SaveAs method of Workbook class failed 

xxxxxx/Test_Excel.asp, line 42 

Дело в том, что если я создаю простой файл .vbs с приведенным выше кодом и запускаю его, все работает должным образом.Это происходит только при запуске в качестве ASP-страницы.

Папка, в которую она пытается записать, должна иметь правильные разрешения (я добавила «Все» к ней с полным доступом).

У кого-нибудь есть предложения относительно того, почему это происходит?

Спасибо!

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Прежде всего, я бы удалил эту группу Everyone из папки, в которую вы пытаетесь записать, что оставляет потенциальную головную боль безопасности еще на один день.

Есть несколько различных способов, которыми вашсайт может быть настроен на проверку подлинности, которая будет определять идентичность, с которой будет запускаться сервер COM COM Excel.

Однако вместо того, чтобы просматривать их все, создайте сценарий, который выполняет только это:1008 * Откройте диспетчер задач, выберите вкладку «Процессы».Убедитесь, что «Показывать процессы от всех пользователей» включен, и сортируйте процессы по имени изображения.

Перейдите к приведенному выше сценарию, и вы увидите, что Excel.exe появится в списке процессов:

enter image description here

В третьем столбце вы увидите удостоверение, под которым работает Excel.Это учетная запись, для которой необходимы разрешения на запись в вашу папку c:\Temp.

Когда вы сделаете это, вам нужно будет вручную убить Excel.exe, потому что в противном случае она будет продолжать работать.

0 голосов
/ 26 января 2016

Единственное, что я могу порекомендовать, это проверить пулы приложений в IIS7. В расширенных настройках пула приложений вам может потребоваться изменить учетную запись Identity на одну из встроенных. По умолчанию в IIS7.5 + используется динамическая учетная запись с именем пула приложений, которая отображается в диспетчере задач с именем.

...