0

Win Server 2003 32 ビットで実行されているこのアプリケーションを Win server 2008 64 ビット環境に移行するときに、ASP.NET アプリケーションが Excel ファイルをインポートできません。このバグを修正するには?Win Server 2003 32 ビットでは正常に動作するためです。

表示されるエラー レポート: *Sy​​stem.Runtime.InteropServices.COMException (0x800A03EC): HRESULT からの例外: Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password、Object WriteResPassword、Object IgnoreReadOnlyRecommended、Object Origin、Object Delimiter、Object Editable、Object Notify、Object Converter、Object AddToMru、Object Local、Object CorruptLoad) (C:\inetpub\wwwroot\ERMApproval\Administrator\ の Admin_ImportRisk.CreateTempTable()) ImportRisk.aspx.vb: 66 行目。*

私のアプリケーションの 66 行目のコードは次のとおりです: oBooks.Open(Server.MapPath("~/App_Data/Risk.xls"))

私はいくつかのシナリオを試しました:

  1. ネットワーク サービス ユーザーを DCOM 構成の Microsoft Excel アプリケーションに追加し、以前は同じだったアプリケーション プールの ID を設定しました。

  2. DCOM 構成のセキュリティで、すべての種類のユーザーを Microsoft Excel アプリケーションとマイ コンピュータに追加しました。また、アプリケーションのフォルダーにも多くの種類のユーザーを追加しました。

  3. corflags.exe を使用して、32 ビット アプリケーションを強制的に 64 ビット環境で実行する

  4. regsvr32.exe を使用して、Microsoft.Office.Interop.Excel.dll ファイルを Windows 32 ビット コンポーネント サービスに登録しました。

  5. rundll32.exe を使用して、32 ビット環境で 32 ビットの Microsoft.Office.Interop.Excel.dll ファイルを実行しました。

しかし、結果は同じです。お役に立てれば大変光栄です^^。よろしく、 -イマヌエル-

4

1 に答える 1

0

簡単な答えは、x86 のみを対象とするようにプロジェクトをコンパイルすることです。これはプロジェクト設定の設定です。そのため、.net フレームワークは、デフォルトで 64 ビットではなく、実行時に 32 ビット アプリケーションのみを生成します。これは、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 ビット バージョンがインストールされていることを確認してください。

于 2011-07-28T06:55:47.977 に答える