2012-02-06 3 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 응용 프로그램을 만들어 엑셀 프로 세스는 메모리에서 자라고 있습니다. 어떻게하면 워크 북을 닫을 수 있습니까?

+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 처리로 대체해야합니다. (ASP를 포함한 모든 대화 형이 아닌 무인 클라이언트 응용 프로그램이나 구성 요소에서 Microsoft Office 응용 프로그램의 자동화

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

"마이크로 소프트는 현재 권장되지 않으며, 지원하지 않는 : Office 응용 프로그램의 서버 측을 자동화하면 지원되지 않는 시나리오 , ASP.NET, DCOM 및 NT 서비스), Office가이 환경에서 실행될 때 불안정한 동작 및/또는 교착 상태가 발생할 수 있기 때문입니다. "