none
엑셀파일오픈에러 RRS feed

  • 질문

  • 안녕하세요!
    초보플맨입니다^^

    고수에 도움을 얻고자 글을 적습니다.

    iis5에서 작동중인 소스인데..IIS7으로 이전후 에러가 발생합니다.

    엑셀파일을 아래처럼 해당경로에서 읽을려 하는데...

     excel_up= server.mappath("\Mas\") &"\cost_temp.xls"
     excel_up= Replace(excel_up,"\","\")
     print excel_up

     set ex_up = createobject("excel.application")
     set objworkbooks = ex_up.workbooks
     set objworkbook = objworkbooks.open(excel_up)'엑셀파일 오픈
     Set objWorksheet = objWorkbook.Worksheets(1) 'Worksheet 객체 생성
     Set objRange = objWorksheet.UsedRange '사용된 영역 객체 생성

     긁게표기된 부분에서 오류가 발생합니다.
     환경은 IIS7이고, 엑셀은2007을 깔고,,Dcom에서서 사용권한주고, 했습니다,

    IIS7에서도 실행권한을 주고 했는데..ㅜㅜ 아래와 같은 에러가 발생합니다.
    인터넷에서 아무리 찾아봐도 해답이 없네요..ㅜㅜ 꼭 좋은 답변 부탁드립니다.

     

    Microsoft Office Excel 오류 '800a03ec'

    'D:\PCIS\hwasun\Mas\cost_temp(3).xls' 파일을 사용할 수 없습니다. 원인은 다음과 같습니다. ? 해당 파일 이름이나 경로가 없습니다. ? 다른 프로그램에서 파일을 사용하고 있습니다. ? 저장하려고 하는 통합 문서 이름이 현재 열려 있는 통합 문서의 이름과 같습니다.

    /mas/Mas_Ins_Ok_Sub.asp, 줄 28 ( -->위에 굵은 줄)

     

     

     

    2010년 5월 12일 수요일 오전 11:29

모든 응답

  • 접근하고자 하셨던 경로가 서비스되는 ASP 페이지의 경로 밖인 경우이거나, 정규화된 전체 경로인 경우 IIS 7에서는 추가적인 설정이 필요할 수 있습니다. 예상되는 원인으로는 IIS 6 이후부터 기본 정책으로 적용되는 부모 경로 제한 설정에 관한 것으로, http://www.egocube.pe.kr/asp_0049.asp 의 내용을 인용하여 말씀드리면 다음과 같습니다.

    클래식 ASP 에서 개발자들은 부모 경로 기능을 사용하여 ".." 문자열이 포함된 파일 및 폴더의 경로를 나타내는 상대 주소를 사용할 수 있었습니다. 그 구체적인 예로, 다음 코드는 부모 경로를 사용하는 ASP 페이지에서 발췌한 것입니다.:

    <%
        Response.Write Server.MapPath("../example.asp")
    %>
    

    그리고, 다음 코드는 부모 경로에 존재하는 파일을 인클루드하는 ASP 페이지에서 발췌한 것입니다.:

    <!--#include file="../_fpclass/fpdblib.inc"-->
    

    이전 버전의 IIS 에서는 이러한 부모 경로 기능이 기본적으로 활성화되어 있었습니다. 그러나, IIS 6.0 부터는 보안 및 디자인 측면의 이유를 근거로 부모 경로 기능이 기본적으로 비활성화 되도록 변경되었으며, 그 구체적인 이유는 부모 경로상에서의 실행을 방지하고, 보안이나 응용 프로그램의 경계를 넘어서는 콘텐츠의 인클루드를 방지하기 위한 목적입니다. 기본적으로 IIS 7.0 에서는 클래식 ASP 스크립트의 오류 메시지가 웹 브라우저로 전송되지 않는다는 점을 감안해 볼 때, 부모 경로를 사용하려고 시도하는 모든 코드는 다음과 같은 기본 오류 메시지를 웹 브라우저에 출력하게 됩니다.:

        An error occurred on the server when processing the URL. Please contact the system administrator.
        If you are the system administrator please click here to find out more about this error.


    주의: 이 기본 ASP 스크립트 오류 메시지는 관리자가 재정의 할 수 있습니다. 클래식 ASP 스크립트 오류 메시지에 대한 보다 자세한 정보는 Classic ASP script errors are no longer shown in a Web browser by default 문서를 참고하시기 바랍니다.

    그러나, ASP 스크립트 오류 메시지를 웹 브라우저로 전송하도록 속성을 활성화시키고 클래식 ASP 스크립트에서 부모 경로를 맵핑하려고 시도해보면, 웹 브라우저에 다음과 같은 오류 메시지가 출력될 것입니다.:

        Server.MapPath() error 'ASP 0175 : 80004005'
        Disallowed Path Characters
        /test/example.asp, line 100
        The '..' characters are not allowed in the Path parameter for the MapPath method.


    그리고, 클래식 ASP 스크립트에서 부모 경로를 사용하여 파일을 인클루드하려고 하는 경우에는 웹 브라우저에 다음과 같은 오류 메시지가 출력될 것입니다.:

        Active Server Pages error 'ASP 0131'
        Disallowed Parent Path
        /test/example.asp, line 100
        The Include file '../_fpclass/fpdblib.inc' cannot contain '..' to indicate the parent directory.

    (중략)

    ASP 부모 경로 활성화 
    IIS 관리자를 사용하면 부모 경로 기능 자체를 활성화시키거나 비활성화시킬 수 있습니다. 먼저, IIS 관리자를 실행하고 클래식 ASP 스크립트 오류 메시지를 제어할 사이트나 응용 프로그램을 선택한 다음, "ASP" 기능 아이콘을 마우스로 더블 클릭합니다. 

    그리고, ASP 기능의 속성 목록에서 "부모 경로 사용 (Enable Parent Paths)" 속성의 값을 원하는 값으로 설정합니다. 


    위의 설정을 참고하시어 부모 경로 설정을 해당 ASP 파일이 위치한 디렉터리에서 수행해보실 것을 권합니다. 그리고 특별한 경우가 아니면, 부모 경로 설정을 사용하지 않아도 정상적으로 동작할 수 있도록 ASP 웹 응용프로그램의 코드를 수정하시는 것을 추천합니다. 부모 경로 설정 허용은 예기치 않은 보안 문제를 일으킬 수 있습니다.


    남정현 (rkttu@rkttu.com) - Visual Studio 2010 한국 공식 팀 블로그 멤버 - http://www.vsts2010.net | Windows Azure Cafe SYSOP - http://cafe.naver.com/wazure | DEVPIA C# Forum SYSOP - http://www.devpia.com/CSharp.MAEUL
    2010년 10월 28일 목요일 오전 7:31