문제

클래식 ASP에서 Server.mappath () 항상 제대로 작동하지는 않습니다 application_onstart 내면의 이벤트 Global.asa. ASP 페이지가 있습니다 " testfolder test.asp" 가상 루트 내에는 XSLT 파일이 있습니다. " xsl transform.xsl". 내 가상 루트가 있습니다 "C : inetpub wwwroot testapp ".

나는 사용한다 Mappath ASP 페이지 내에서 XSLT 파일의 전체 경로를 얻습니다. 전화는 다음과 같습니다.

sXslPath = Server.MapPath("xsl\transform.xsl")

때로는 Mappath가 돌아옵니다 "C : inetpub wwwroot testapp xsl transform.xsl" 예상대로 다른 경우에는 잘못 반환됩니다 "C : inetpub wwwroot testapp시험 개xsl transform.xsl ". 잘못된 경로는 분명히 심각한 문제를 일으 킵니다.

도움이 되었습니까?

해결책

여기에서 내 자신의 질문에 대답하고 있습니다.

이 문제는 호출 될 때 발생하기 때문에 발생합니다 application_onstart, Mappath 응용 프로그램이 시작되는 페이지의 컨텍스트가 잘못 포함되어 있습니다. 응용 프로그램이 아직 시작되지 않았을 때 실행될 첫 번째 ASP 페이지가 가상 루트의 루트에 있지 않으면 Mappath 혼란스러워서 호출 된 ASP 페이지의 경로를 반환하는 경로에 추가합니다.

예를 들어 앱을 시작한 페이지가 "C : inetpub wwwroot testapp folder1 folder2 test.asp" Mappath가 잘못 추가됩니다 " folder1 folder2" 경로의 중간으로 돌아와 돌아옵니다 "C : inetpub wwwroot testapp folder1 folder2 xsl transform.xsl"

웹 사이트에 루트 폴더에 파일 만 있거나 사용하지 않는 경우 Mappath 안에 Global.asa 그러면 당신은이 작은 이상함을 결코 알지 못할 것입니다. 이 때문에 때때로 제대로 시작하지 못하는 ASP 클래식 사이트가 많이 있다고 생각하지만, 소유자는 빠른 IISRESET을 수행하여 무엇이 잘못되었는지 알지 못합니다.

이것의 결과는 당신이 안정적으로 사용할 수 없다는 것입니다. Mappath 안에 Global.asa 루트 폴더가 아닌 ASP 파일이있는 웹 사이트가있는 경우

일회성 웹 사이트 인 경우 가장 쉬운 솔루션은 사용하는 모든 경로 만 하드 코드입니다. Global.asa.

ASP Classic을 기반으로 다른 사람들에게 제품을 판매하는 경우 하드 코딩하는 경로는 옵션이 아닙니다. 당신은 모든 사용을 움직여야합니다 Mappath 설치 프로그램의 일부로 ASP 파일에 경로를 작성하여 응용 프로그램 시작 또는 문제를 처리합니다.

다른 팁

또는 sxslpath = server.mappath ( " xsl transform.xsl")를 사용하십시오.

그런 다음 루트 디렉토리에서 경로를 매핑합니다.

당연히 서버가 아닌 OS에서 IIS를 개발하는 경우 루트는 기본 웹 사이트가 될 것입니다. 배포시 변경을 기억해야합니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top