2012-02-06 7 views
0

IIS上にASP.netアプリケーションがあります。 、作業中:Excelアプリケーションがメモリ上に増えています

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

     Marshal.ReleaseComObject(ExlWs);   

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

問題:私は私のオブジェクトを破壊し、私は新しいワークブックを作成し、最終的には、アプリケーションの作業中

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

: は、このアプリでは、私は、Excelアプリケーションを作成しましたEXCELの処理はメモリ上で成長していますが、どのようにしてブックを閉じることができますか?

+1

オブジェクトを作成する場所のコードを表示することもできます。なぜGC.Collectを呼び出しているのかわからない場合は、Marshal.RealeaseComObject(....)ループ内かどうかはわかりません。 – MethodMan

+1

http://stackoverflow.com/questions/7382704/asp-net-web-service-using-office-2010-comを参照してください。サーバープロセスからオフィスオートメーションを使用することはできません。 –

+0

ウェブアプリケーションのすべてのユーザーに対してOfficeライセンスを取得していない限り、すべての警告を無視すると、これを行うことは法的に許可されていません。 – x0n

答えて

5

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

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

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

関連する問題