사전 컴파일 된 ASP.NET 웹 응용 프로그램 : 오류“System.Web.httpException 파일 filename.aspx가 사전 컴파일되지 않았으며 요청할 수 없습니다.”
-
03-07-2019 - |
문제
ASP.NET 3.5 웹 애플리케이션 (웹 사이트가 아님)의 Visual Studio 2008 템플릿을 사용하여 웹 배포 프로젝트를 만들었습니다.
배포에 필요한 파일을 만든 프로젝트를 컴파일했습니다. 결과 폴더 (빈, 정적 파일 및 모든 폴더가 ASPX 자리 표시기 등을 가진 모든 폴더)를 응용 프로그램을 테스트하려는 스테이징 서버에 복사했습니다.
만약 내가 ~하지 않다 옵션을 표시하십시오 "이 사전 컴파일 된 사이트를 업데이트 할 수 있도록하십시오", 브라우저에로드하는 모든 페이지 에서이 오류 메시지가 표시됩니다.
System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, and cannot be requested.
스택 추적의 마지막 줄 :
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal( VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +8756366
옵션을 확인하면 모든 것이 정상입니다 (실제 ASPX/ASCX가 원래 형태로 여전히 존재하기 때문에).
내가 여기서 무엇을 놓치고 있는지 아십니까? 복사하는 것을 잊어 버린 설정이나 특수 파일이 있습니까?
고맙습니다!
메모:
- 타사 어셈블리에 대한 몇 가지 언급이 있습니다
- 스테이징 서버에서 빈 폴더를 확인했습니다. 여기에는 모든 클래스가 포함 된 사전 컴파일 된 어셈블리가 포함되어 있습니다 (I 반사판을 사용하여 어셈블리를 분석했습니다).
해결책
모든 ASPX 파일에는 만 포함되어야합니다
이것은 사전 컴파일 도구에 의해 생성 된 마커 파일이며 삭제해서는 안됩니다!
빈 폴더의 모든 것을 삭제하고 웹을 다시 게시하십시오. 게시 한 디렉토리에서 파일을 가져와야합니다.
복사해야합니다 .compiled
빈 폴더에 포함 된 파일도 있습니다.
다른 팁
레코드의 경우 ".compiled"파일을 복사하는 것을 잊었습니다.MSDN 문서 : ASP.NET 사전 컴파일 중 파일 처리):
ASP.NET 웹 응용 프로그램의 실행 파일의 경우 .compiled 파일 이름 확장자가있는 컴파일러 어셈블리 및 파일. 어셈블리 이름은 컴파일러에 의해 생성됩니다. .compiled 파일에는 실행 가능한 코드가 포함되어 있지 않습니다. 대신 ASP.NET이 적절한 어셈블리를 찾는 데 필요한 정보 만 포함되어 있습니다.
사전 컴파일 된 응용 프로그램이 배포 된 후 ASP.NET은 BIN 폴더의 어셈블리를 사용하여 요청을 처리합니다. 사전 컴파일 출력에는 페이지의 자리 표시 자로 .aspx 또는 .asmx 파일이 포함됩니다. 자리 표시 자 파일에는 코드가 없습니다. 특정 페이지 요청에 대해 ASP.NET을 호출하는 방법을 제공하기 위해서만 존재하며 파일 권한을 설정하여 페이지에 대한 액세스를 제한 할 수 있습니다.