2012-04-25 2 views
0

정적 웹 사이트의 여러 부분에 연결되는 많은 고전 ASP 및 VB/ASP.Net 응용 프로그램을 유지 관리해야합니다. #include 가상 링크에 대한 처리기

마스터 페이지

은/사이트 /이 될 수있는 많은 많은 조합이 각종

<!-- #include virtual="/site/footer.something" --> 

와 유사한 널려있다.

문제는 로컬에서 이러한 사이트 중 하나를 실행하려고 할 때 디버깅 할 때 거의 파서 오류가 발생한다는 것입니다.

내가 원하는 것은 제네릭 처리기를 사용하여 존재하지 않는 #include 파일에 빈 파일을 삽입하기 만하면됩니다. 브라우저에서 작동하는 URL 다시 쓰기 규칙을 설정하려고했으나 (빈 html 파일로 리디렉션 됨) ASP 파서가 여전히 파서 오류를 생성하므로 webrequest를 포함하지 않는다고 생각합니다.

새 앱을 열 때마다 정적 콘텐츠를 워크 스테이션에 복사하고 싶지 않고 언젠가는 링크를 제외하도록 마스터 페이지를 편집하고 싶지 않습니다. 잊어 버릴 것입니다. 부서진 물건을 전개하십시오.

그래서 이러한 선언 또는 다른 방법에 대한 기본 파일을 제공하는 방법이 있습니까?

편집 :이 문제에 대한 다른 수정을 고려하십시오. 특정 위치에 누락 된 파일에 대한 요청을 받고 미리 정의 된 내용을 반환 할 수있는 일종의 파일 시스템 처리기를 삽입하는 방법이 있습니까? 그래, 그게 사실은 엉뚱한 방향이고 실은 아주 나쁜 생각 인 줄 알지만, 지금은 사무실에서 상당히 좌절스러운 문제 야. IIS가 SSI를 사용하지 않도록 설정하더라도 ASP 프로세서는 여전히 #include 지시어를 사용합니다. 어떤 종류의 생성 된 클래스에서 비헤이비어를 무시할 수 없도록하는 방법이 있습니까?

답변

2

발생하는 문제는 코드가 실행되는이 전에 처리된다는 것입니다. 서버는 스크립트에서 참조되는 모든 자원을 모은 다음 코드를 컴파일하고 실행합니다. 코드가 실행될 때까지 누락 된 include가 이미 컴파일러 오류를 던졌습니다.

또한, 다른 문제가 발생할 가능성이 있습니다. 종종 다른 스크립트가 의존하는 코드 (프로 시저, 상수, 변수 선언 등)가 포함됩니다. 따라서 누락 된 include를 빈 파일로 대체하더라도 include 스크립트가 특정 코드를 포함 할 것으로 기대하는 경우 다른 파서 오류가 발생할 수 있습니다.

아마도 가장 좋은 방법은 콘솔 응용 프로그램이나 유사한 내용으로 파일을 구문 분석하여 include 문을 찾고, 디렉토리 구조를 기반으로 상대 경로를 확인하고 원하는 작업을 수행하는 것입니다. 빈 파일을 작성하는 경우 ' 존재하지 않습니다. 그런 다음이 파서를 통해 프로젝트를 실행할 수 있으며 최소한 문제 인 을 제거하십시오.

또한이 문제를 방지하기 위해 실수로 편집 한 내용을 배포 할 가능성이 있습니다. 나는 "더미"인클루드를 작성한다면 우연히 그들을 배치하고 좋은 파일을 덮어 쓸 가능성이 없다고 가정합니다.

+1

그래, 그게 내가 발견 한 문제 야.고맙게도 컨텐츠는 거의 표준화되어 (최소한의 CMS에서 생성되어 액티브 스크립팅을하지 않기 때문에) 코드를 제외 할 가능성은 거의 없습니다. IIS 설치시 SSI가 비활성화되어 있어도이 링크는 여전히 파싱 중입니다. 더미 파일을 배포 할 가능성은 거의 없습니다. 우리가 유지 관리하는 웹 응용 프로그램의 계층 구조 외부에 존재하기 때문입니다. 이 문제를 해결하려면 완전히 다른 위치로 복사해야합니다. –

관련 문제