web-dev-qa-db-ja.com

サーバーの実行に失敗しました(HRESULTからの例外:0x80080005(CO_E_SERVER_EXEC_FAILURE))

次のようにMicrosoft.Office.Interop.Excel.Workbookクラスを使用して、サーバー側で.xlsファイルを.xlsxファイルに変換しようとしています。

 workBook.SaveAs("FILENAME_HERE", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

そして、私は次のエラーを受け取ります:

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). : System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
   at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
   at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
   at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)
   at CALLING_METHOD_IN_MY_LIBRARY_HERE...

問題は、このエラーがステージングサーバーでのみ発生することです。私のローカルマシンではうまく動作します。

ステージングサーバーで試したこと:

  1. ** 1)dcomcnfg open Component Servicesを実行します

2)コンポーネントサービスを展開します "->"コンピューター "->"マイコンピューター "->" DCOM構成 "

3)「Microsoft Excelアプリケーション」を見つけます。

4)[プロパティ]ダイアログボックスを開く権利

5)[セキュリティ]タブをクリックし、

6)「起動許可とアクティベーション許可、許可の構成、許可の追加-管理者ユーザー(このユーザー)、対話ユーザー、および起動ユーザーの下で実行されるID

7)。起動とアクティベーションの許可+アクセス許可+構成の許可=> IIS_IUSRS +フルコントロールのネットワークサービスを追加**

2. ローカルマシンで.xlsファイルを「Any CPU」から「x86」に変換するプロジェクトのビルドを変更し、サーバーでこのライブラリを公開しました。

誰かがこの問題を修正する方法を見つけましたか?この問題を2日間修正するのに苦労しています。

30
Tamas Ionut

DCOMCNFG.exeを使用します。それを開いて、コンポーネントサービス->コンピューター->マイコンピューター-> DCOM構成-> Microsoft Excelアプリケーションに移動します。

プロパティを開き、[ID]タブを選択して、インタラクティブユーザーを選択します。

27

この問題について詳しく説明しているこの記事を見つけました。これが役立つ場合、次の理由でエラー「80080005サーバーの実行に失敗しました(HRESULTからの例外:0x80080005(CO_E_SERVER_EXEC_FAILURE))」が発生する可能性があります:

  1. マシンのCPU負荷が高く、プロセスの開始に時間がかかり、CoRegisterClassObjects()を120秒未満で実行できません。
  2. COMサーバーは正しいクラスIDに登録しません。
  3. COMサーバーは現在停止しており、CoCreateInstanceとCOMサーバー停止部分の間に競合状態があります。
  4. COMサーバーの起動方法にはセキュリティ上の問題があります(このページでは、パスワードのつづりが間違っているか、「Run As ..」COMサーバーの「バッチジョブとしてログイン」特権がないことを示唆しているようですが、とにかくこれを再検証することをお勧めします特定の構成に関する情報)

https://blogs.msdn.Microsoft.com/adioltean/2005/06/24/when-cocreateinstance-returns-0x80080005-co_e_server_exec_failure/

4
ChiragMM

このソリューションでこの問題を修正しました:コンポーネントサービス/コンピューター/ DCOM構成/ Microsoft Word97-2003ドキュメントプロパティ/全般タブを右クリックします。

認証レベルを設定:なし

2
Ghadir Farzaneh

別の場所で解決策を見つけました。

以下を行うdid私の問題を解決します:

DCOMCNFG.exeを使用します。それを開いて、コンポーネントサービス->コンピューター->マイコンピューター-> DCOM構成-> Microsoft Excelアプリケーションに移動します。プロパティを開き、[ID]タブを選択して、インタラクティブユーザーを選択します。

[〜#〜] but [〜#〜]-問題は数分ごとに戻ってきました!

何時間も原因を突き止めようとした後、サーバーがhundreds開かれたWINWORD.EXEプロセスを持っていることに気付きました。これによりメモリの問題が発生し、exception from hresult 0x80080005エラー。

馬鹿げた話ですが、相互運用アプリケーションcloseにコードを書くのを忘れていました。修正したら、エラーはなくなりました。

doc.Close(false);
Marshal.ReleaseComObject(doc);
Word.Quit();
Marshal.ReleaseComObject(Word);
0
Koby Douek

同じ問題は、サービスの「デスクトップインタラクションを許可する」ことで解決しました。 (ログオンタブのTomcat6w構成ツール)

0
Gabor