Ошибка приложения ASP.NET при запуске в Win Server 2008 64-bit - PullRequest
0 голосов
/ 28 июля 2011

Можете ли вы мне помочь, мое приложение ASP.NET не может импортировать файл Excel при переносе этого приложения, работающего в 32-разрядной версии Win Server 2003, в 64-разрядную среду Win server 2008. Как исправить эту ошибку? потому что в Win Server 2003 32-разрядная версия работает правильно.

появляется сообщение об ошибке: * System.Runtime.InteropServices.COMException (0x800A03EC): Исключение из HRESULT: 0x800A03EC в Microsoft.Office.Interop.Excel.Workbooks.Open (строковое имя файла, объект UpdateLinks, объект ReadOnly, формат объекта, пароль объекта, объект WriteResPore огонь, объект WriteResPore огонь, объект WriteResPoremendO, объект IlyNegname, II , Происхождение объекта, разделитель объекта, редактируемый объект, уведомление объекта, преобразователь объекта, объект AddToMru, локальный объект, объект CorruptLoad) в Admin_ImportRisk.CreateTempTable () в C: \ inetpub \ wwwroot \ ERMApproval \ Administrator \ ImportRisk.aspx.vb: line 66. *

Код в строке 66 моего приложения: oBooks.Open (Server.MapPath ( "~ / App_Data / Risk.xls"))

Я пробовал несколько сценариев:

  1. Добавлен пользователь сетевой службы в приложение Microsoft Excel в конфигурации DCOM и задан идентификатор пула приложений, который раньше был таким же.

  2. Добавлены все виды пользователей в приложение Microsoft Excel и Мой компьютер в целях безопасности конфигурации DCOM. И я добавил много разных пользователей в папку приложения.

  3. Использование corflags.exe для принудительного запуска 32-разрядного приложения в 64-разрядной среде

  4. Использовал regsvr32.exe для регистрации файла Microsoft.Office.Interop.Excel.dll в службах 32-разрядных компонентов Windows.

  5. Использовал rundll32.exe для запуска 32-разрядного файла Microsoft.Office.Interop.Excel.dll в 32-разрядной среде

Но результат все тот же. Для меня будет большой честью, если вы поможете мне ^^. С наилучшими пожеланиями, -imanuel-

1 Ответ

0 голосов
/ 28 июля 2011

Простой ответ - скомпилировать ваш проект только для x86.Это настройка в настройках проекта.Таким образом .NET Framework будет генерировать только 32-битное приложение во время выполнения, а не по умолчанию 64-битное.Это ничем не отличается от установки corflags, однако, если у вас есть несколько сборок, вы должны убедиться, что это сделано для всех них.Само приложение должно быть предназначено только для 32 бит.

Вы используете 32-битный компонент COM, и вы не можете сделать это в 64-битном приложении, поэтому установите его как 32-битный.

Вы также можете принудительно установить IISчтобы запустить его в 32-битном контексте, как описано здесь:

http://lostechies.com/gabrielschenker/2009/10/21/force-net-application-to-run-in-32bit-process-on-64bit-os/

Кроме того, убедитесь, что 64-битная версия Excel установлена ​​не на сервере, а 32-битная версия.

...