[IIS7][Excel] IIS7 호스팅 웹 어플리케이션 내에서 Excel Automation 오류
[증상] IIS7 내의 웹 어플리케이션 프로세스 내에서 Excel 파일로 저장 시 아래와 같은 오류 발생함. 윈도우 어플리케이션에서 수행하면, 문제 없음, IIS6로 호스트되는 웹 어플리케이션인 경우도 문제 없음.
System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC at Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local) at Service.HelloWorld() in c:\WF\WFStarter\App_Code\Service.cs:line 97
[원인] 기본적으로 MS에서 IIS7 내에서 Excel 을 포함한 Office Automation 처리를 권장하지 않고, 지원하지도 않는다고 합니다. 따라서 IIS7 내의 웹 어플리케이션 상에서 Excel Automation은 기본적으로 막혔다고 잠정 판단하고 있음.
[해결안] 1. 우회적인 방법으로 웹 어플리케이션 내에서 직접 Excel 파일을 저장하지 말고, XML 형식으로 일단 저장한 후, 서버 상의 (IIS7에 의해 호스트되지 않는) 다른 독립 프로세스가 그 XML을 파싱하여 Excel로 저장하도록 처리함. 2. Excel 저장을 처리할 수 있는 Open Source나 다른 모듈을 사용함
Open Source를 사용하여 해결 한 예로서, 첨부된 소스의 웹 어플리케이션 참조하기 바람. TestWeb\Default.aspx 실행 후 “Go” 버튼을 누르면 DemoMyXLS.aspx에서 처리됨 실제 저장 코드는 DemoMyXLS.aspx의 behind code를 확인하기 바람. 결과 Excel은 C:\ TestingAgain.xls 임
[참고] 그 근거로서 아래 Reference들을 참고하기 바람.
- Excel Automation in IIS7 http://blog.crowe.co.nz/archive/2006/03/02/589.aspx
- Related KB http://support.microsoft.com/kb/257757/ko http://support.microsoft.com/default.aspx/kb/288367
- Forum http://bytes.com/groups/net-asp/822893-microsoft-office-excel-cannot-access-file-iis7
- Free source for saving excel in asp.net app. http://www.gemboxsoftware.com/GBSpreadsheetFree.htm http://myxls.in2bits.org/wiki/Downloads.ashx
|