VSTO Powerpoint API を使用して、Powerpoint ファイルの作成を自動化しています。私が見つけたのは、最も基本的な呼び出しを使用して Windows 7 システム上の Web アプリケーションから Powerpoint ファイルを作成すると、メモリ不足エラーが発生することです (開いているファイルを操作する他の VSTO 呼び出しも失敗します)。
PowerPoint.Presentation presentation = _ppPresentations.Add(Office.MsoTriState.msoTrue);
string outputDirectory= getOutputDirectory();
presentation.SaveAs(outputDirectory+ "\\CreateSlideTestOutput.pptx",
PowerPoint.PpSaveAsFileType.ppSaveAsDefault, Office.MsoTriState.msoTrue);
私が受け取ったエラーは、ファイルを操作するために VSTO API 呼び出しが行われているとき (たとえば、パワーポイントにスライドを保存または追加するとき) に「メモリ不足」です。
しかし、単体テストで同じコードを実行するか、ユーザー実行可能ファイル (.exe) として実行すると、コンテンツの追加、Powerpoint ファイルの操作と保存に問題がないことがわかりました。
しかし、ユーザー実行可能ファイルで使用されている同じコードを自動化する Windows サービスを作成しようとすると、メモリ不足エラーが再び表示されます。サービスにブレークポイントを設定すると、Web アプリケーションから呼び出されたときに失敗したのとまったく同じ VSTO API 呼び出しでサービスが失敗していることがわかります。
アプリ プール スレッドまたは Windows サービス スレッドで常にメモリ不足エラーが発生しているのに、ユーザー実行可能スレッドが問題なく VSTO API 呼び出しを実行できる理由 (およびメモリ内で観察可能なジャンプがない) の説明を誰かが持っていますか?