...More Simple More Efficient... ☞ Guest Book enSimple.net ?
Home Study Q & A Knowledge Base Free Board News

   Knowledge Base
[작성자 : chang]  1/15/2009 2:00:45 PM  에 남기신 글입니다.

제목 : [IIS7][Excel] IIS7 호스팅 웹 어플리케이션 내에서 Excel Automation 오류
[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




첨부파일 : IIS7ExcelTest.zip (6987 Kbytes)       
List
□ 한줄의 평 이름: