Excelアプリケーションがメモリで増えています

私はIIS上にASP.netアプリケーションを持っています。 このアプリで私はExcelアプリケーションを作成しました:

using Excel = Microsoft.Office.Interop.Excel;
public Excel.Application ExlApp;
//
public Excel.Workbook ExlWb;
//
public Excel.Worksheet ExlWs;

アプリケーションの作業中に、新しいワークブックを作成し、最後にオブジェクトを破棄します。

        GC.Collect();
        GC.WaitForPendingFinalizers();

        Marshal.ReleaseComObject(ExlWs);        

        ExlWb.Close(Type.Missing, Type.Missing, Type.Missing);
        Marshal.ReleaseComObject(ExlWb);

問題:仕事中に、EXCELの処理がメモリー上に成長していますが、どのようにしてブックを閉じることができますか?

0
私はレポートを生成するために事務所が必要です...そして、オブジェクトを処分することには問題があります(
追加された 著者 Oleg,
"Windowsサービス(例えばIISとASP.NET)からのオートメーションを使用することはMSによってサポートされていません" - オートメーションサポートでwinformアプリケーションでExcel COMオブジェクトを使用することは可能ですか?
追加された 著者 Oleg,
stackoverflow.comを参照してください。/questions/7382704 /… サーバープロセスからオフィスオートメーションを使用することはできません。
追加された 著者 John Saunders,
Webアプリケーションのすべてのユーザーに対してOfficeライセンスを取得していない限り、すべての警告を無視すると、これを行うことは法的に許可されていません。
追加された 著者 x0n,
あなたはオブジェクトを作成している場所のコードを表示することができます..あなたがGC.Collectを呼び出す理由もわからないMarshal.RealeaseComObject(....)をループ内で作成しているのであればか否か..
追加された 著者 MethodMan,
はい、WindowsフォームアプリケーションはOfficeオートメーションを使用できます。それでもなおExcelレポートサーバー側を生成したい場合は、この記事をご覧ください。 msdn.microsoft.com/en-us/library/hh180830.aspx
追加された 著者 granaker,

1 答え

Excelの自動化をOpenXMLの処理に置き換えることを検討する必要があります。オフィスアプリケーションサーバー側の自動化はサポートされていません。

http://support.microsoft.com/kb/257757

Officeは不安定な動作を示す可能性があるため、Microsoftは現在、無人で非対話型のクライアントアプリケーションまたはコンポーネント(ASP、ASP.NET、DCOM、およびNTサービスを含む)からMicrosoft Officeアプリケーションの自動化を推奨しており、サポートしていません。 /またはこの環境でOfficeが実行されるときのデッドロック。

5
追加された