ASP.NET 오류를 수정하는 방법“ 'Nnn.aspx'파일이 사전 컴파일되지 않았으며 요청할 수 없습니다.

StackOverflow https://stackoverflow.com/questions/602117

  •  03-07-2019
  •  | 
  •  

문제

"게시 웹 사이트"를 사용하여 게시하는 vs 2005 웹 사이트가 있으며 세 개의 확인란을 모두 지 웁니다. 또한 게시 된 파일을 선택하고 MSI를 생성하는 배포 프로젝트가 있습니다. 그런 다음 별도의 테스트 서버에 패키지를 설치합니다.

다시 말해, 전체 사이트는 미리 컴파일됩니다. 그러나 "서비스"라는 특정 하위 폴더의 .aspx 파일로 이동하면 httpexception을 얻습니다.

System.web.httpexception : '/myapp/services/mypage.aspx'파일은 사전 컴파일되지 않았으며 요청할 수 없습니다.

다른 폴더의 .aspx 파일로 이동하면 루트 또는 다른 하위 폴더 인 경우 올바르게 작동합니다.

MyPage.aspx 자체의 내용은 다음과 같습니다. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="mypage.aspx.cs" Inherits="Services_mypage" %>"

에서 /myapp/bin 폴더 나는 볼 수있다 mypage.aspx.989dc2fb.compiled 파일. 이것의 내용은 빈 폴더에도 존재하는 특정 어셈블리를 가리키는 것으로 보입니다.

이 오류가 발생하는 이유는 무엇입니까? .compiled 파일이 있고 어셈블리가 있으며 해당 어셈블리에 해당 유형이 있습니다 (객체 브라우저에서 볼 수 있음). .compiled 파일의 이름이나 내용에 관한 것입니까? 어떻게 든 잘못된 버전이 있습니까? .compiled Filename의 무작위 숫자는 무엇을 의미하며 중요합니까?

또한이 문제가 갑자기 나타 났다고 언급하고 싶습니다. 며칠 전에 제대로 작동했기 때문에 어떤 변화가 수행 될 수 있는지 확실하지 않습니다 (그러나 최선을 다하면 아무것도 없습니다).

도움이 되었습니까?

해결책

나는 그 오류가 없었지만, 약간의 인터넷 검색 후에 나는이 링크를 발견했지만, 당신이 아직 그것을 보았는지 확실하지 않습니다. http://forums.asp.net/t/956297.aspx

편집 (키 텍스트 추가) :

이 오류는 web.config에 기준이 지정되고 배포 폴더/사이트에는 시스템에 설치된 DLL이 포함되어 있지 않거나 빈 폴더가 포함되어 있지 않은 경우 (개인 어셈블리 인 경우). 예를 들면 다음과 같습니다. 오류가 발생합니다.

사람들은 대상 서버에서 조립 된 어셈블리가 근본 원인이되었다고보고했지만 귀하와 같은 오류가 발생했다고보고했습니다. 기이한.

어쩌면 그게 문제일까요?

다른 팁

누락 된 어셈블리를 대체하기 위해 재발행을 통해 문제를 해결 한 위의 모든 답변에 대한 각주와 마찬가지로, 이전에 동일한 솔루션 으로이 문제를 해결했지만 다른 사람들을 도울 수있는 또 다른 이유를 만났습니다.

내 사이트가 실행중인 AppPool은 "32 비트 응용 프로그램 활성화"설정이 False로 설정되어 있습니다. 앱 풀의 "고급 설정"대화 상자를 통해 이것을 true로 변경함으로써 문제를 해결했습니다.

다른 가난한 빨판에 도움이되기를 바랍니다.

사이트를 2.0에서 4.0으로 업그레이드했을 때이 오류가 발생했습니다. 오류는 파일로 인해 발생했습니다 PrecompiledApp.config 사이트에서 root 예배 규칙서. 해당 파일을 삭제하면 사이트가 작동하기 시작했습니다.

지난 며칠 동안이 문제를 해결하기 위해 고군분투하고 있습니다. 적어도 제 경우에는 오류 메시지가 완전히 오해의 소지가 있었고 사전 컴파일 된 웹 사이트와 관련이 없었습니다. 혼란에만 추가 된 많은 다른 답변을 제공하는 많은 기사 나 게시물이 있습니다. 나는 개인적 으로이 오류가 주로 참조가 누락되거나 잘못된 버전화로 인해 발생한다고 생각합니다. 문제를 최대한 빨리 해결하려면이 문제를 배제하거나 누락 된/잘못된 참조를 수정해야합니다.

그렇게하려면 "어셈블리 바인딩 로그 뷰어"라는 도구를 사용해야합니다. 이 도구는 어떤 참조가 누락되었거나 잘못된 버전을 가지고 있는지 알려줍니다. 누락 된/불일치가있는 참조가 있으면 계속해서 고치십시오. 그렇지 않으면 앱 풀을 32 비트 또는 권한임을 확인하는 것과 같은 다른 마술 트릭을 수행해야합니다.

단계 :

  1. 서버에서 다음 폴더를 만듭니다

    C : fuslog c : fuslog logs

  2. C : fuslog의 서버에 어셈블리 바인딩 로그 뷰어를 복사하십시오 :

    이와 같은 위치에서 프로그램을 찾을 수 있습니다.

    C : Program Files (x86) Microsoft SDKS Windows V7.0A bin fuslogvw.exe

    "Program Files (x86)"대신 "Program Files"를보고 "V7.0A"대신 다른 소포를 살펴 봐야 할 수도 있습니다.

  3. 서버에서 fuslogvw.exe를 실행하십시오

  4. "설정 ..."를 클릭하십시오.

  5. "로그 바인드 디스크 고장"이 확인되었는지 확인하십시오.

  6. 사용자 정의 로그 경로 활성화를 확인하고 상자에 다음을 입력하십시오. c : fuslog logs

  7. 확인을 클릭하십시오

  8. 새로운 바인딩을 시행하기 위해 앱 풀을 재활용/재설정

  9. 새로 고침을 클릭하십시오. 이제 여기에서 실패한 바인딩을 볼 수 있습니다

  10. 정확한 바인딩을 찾는 더 좋은 방법은 c : fuslog logs default로 이동하는 것입니다. 여기에서는 정확한 바인딩 실패를 찾을 수 있습니다. 일부는 관련이 없으며 시행 착오로 중요한 것을 찾아야합니다. 광산은 다음과 같은 실패였습니다.

     System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    

내 웹 사이트 web.config에서 다음 항목을 추가하여 문제를 해결했습니다.

<configuration>
    ...
    <runtime>
        ...
        <!-- Added this entry to fix the issue -->
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.0" />
        </dependentAssembly>
        ...
    </runtime>
    ...
</configuration>

이것이 다른 사람들이 문제를 신속하게 해결하는 데 도움이되기를 바랍니다.

이 오류는 나에게 발생했고 해결했습니다.

사이트를 게시하려면 Visual Studio에서 고정 이름 지정 및 단일 페이지 어셈블리 사용을 확인하십시오.

이 문제가 해결 될 것입니다!

나는 같은 문제에 부딪쳤다. 이 폴더의 임시 ASP.NET 파일 폴더에서 파일을 삭제하여 문제가 해결되었습니다.

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root 

MSI에서 누락 된 (WEB) DLL으로 판명되었으며, 오류를 제공하는 페이지에서 사용되었다고 가정합니다. 페이지가 확실히 사전 컴파일되었지만 해당 DLL에 대한 언급이 누락되었으므로 오해의 소지가있는 오류 메시지입니다.

다른 솔루션 중 여러 솔루션을 시도한 후 AppPool을 다시 시작하여이를 수정했습니다. 이번에는 repoadishing이 옵션이 아니 었습니다.

이 옵션은 나에게 문제를 해결했습니다. 기본적으로 이전 배포 후 남은 모든 고아 파일을 제거합니다.

Remove additional files at destination

오늘도 같은 문제가있었습니다. 일부 포럼은 귀하의 웹 사이트에 참조가 누락되었다고 말하며 확실히 귀하의 경우에도 그렇습니다. 필요한 모든 어셈블리가 포함되어 있음에도 불구하고 3.5 프레임 워크가있는 IIS 서버에 웹 사이트를 배포했을 수 있습니까?

글쎄요, 원본 ASPX 3.5 웹 사이트에서 web.config 파일을 복사하고 일부 부품 (다른 3.5 어셈블리 참조를 제거)을 수정하고 다시 배포 해보십시오.

동일한 파일을 재배치하면이 문제 가이 문제를 해결했습니다.

따라서 다른 것을 시도하기 전에 먼저 앱을 다시 배포하려고 시도 할 수 있습니다 (빈 폴더 컨텐츠가 충분해야합니다).

BTW : 제 경우에는 C 드라이브가 공간이 떨어지면 오류가 시작되었습니다.

행복한 코딩! Chitec

나는 오류가 다른 것에 대해 불평하고 있다는 것을 알고 있지만 내 경우에는 문제가 액세스 권한이 충분하지 않습니다(네트워크 서비스 또는 응용 프로그램 풀 ID 또는 IUSR) ASP.NET 계정의 경우 해당 특정 파일과 함께 작동합니다.

예정이었습니다 비정상적인 배포 VPS 환경에서 빈 파일과 새로운 게시 된 파일을 혼합합니다.

해결책:

해당 특정 파일 권한은 BIN 내부에서 올바르게 작동하는 다른 파일 (및 해당 오류)과 같은 올바른 빈 폴더 권한으로 교체해야합니다.

enter image description here

사용 가능한 디스크 공간을 확인하여 시작하십시오. 하드 드라이브 호스팅 IIS에서 공간이 부족할 때이 오류가 발생했습니다.

저에게는 프로덕션 폴더를 삭제 한 다음 새 파일을 복사하는 스크립트가있었습니다.

스크립트는 프로덕션 폴더를 올바르게 삭제하지 못했습니다. 기존 파일과 새 파일이 함께 혼합되어 오류가 발생합니다.

전체 폴더를 수동으로 삭제하고 성공적으로 재배치 한 다음 스크립트를 업데이트했습니다.

MSBuild 스크립트를 실행할 때이 오류가 발생하면 프로젝트가 2.0 또는 3.5 프로젝트이고 MSBuild가 4.0 컴파일러를 사용하고있을 것입니다. ASPNetCompiler 지시문에 TargetFrameworkMoniker = "3.5"를 추가 해보십시오.

기존 사이트에 약간의 변경 사항을 배포했을 때이 문제에 직면했습니다.

문제에서 복구하기 위해 BIN 폴더에서 모든 파일을 삭제하고 재배치했습니다.

그런 다음 문제가 해결되었습니다.

이것이 도움이되기를 바랍니다.

제 경우에는 ajaxcontroltoolkit.dll, telerik.dll 등과 같은 공통 DLL을 업로드하지 않았습니다. 게시 된 전체 폴더를 업로드하여이를 수정했습니다.

업데이트 된 경우 다시 컴파일하는 경우. bin 폴더의 모든 파일을 다시 복사하고 해당 폴더에서 업데이트 된 특정 파일도 다시 복사하십시오.

ASP.NET MVC Razor View (.CSHTML)에 대한 오류의 경우 /bin 폴더에는 동일한보기에 대해 두 개의 .compiled 파일이 포함되어 있습니다. 그들 중 하나는 나이가 많았고 삭제해야했습니다.

또한 컨트롤러 뷰 서브 폴더에서 두 번째 뷰도 삭제해야했습니다.

문제의 이유는 컨트롤러보기 하위 폴더에서 뷰를 공유 폴더로 옮겼지만 배포 프로세스 (Visual Studio Publish)는 서버에서 쓸모없는보기 및 View.compyed 파일을 삭제하지 않았습니다. Visual Studio에게 항상 대상 폴더를 정리하도록 지시 할 수 있지만 배포 프로세스가 느려집니다.

마침내 문제를 발견했습니다. 나와 같은 MVC 프레임 워크를 사용하는 경우 MVC 버전을 업데이트하십시오. 제 경우에는 MVC 4.0.0.0에서 4.0.0.1을 변경하고 모든 프로젝트 참조의 "로컬 사본"특성을 "True"로 확인했습니다. 그 후 내 문제가 해결되었습니다. 모든 구성 파일 (4.0.0.0-> 4.0.0.1)에서 MVC 버전을 확인하십시오.

ASP 컴파일러 경고 메시지를 조심하십시오.

VWD Express 2012를 사용하기 시작했을 때도 같은 문제가있었습니다 (제 생각에 사용했던 Express 2010을 사용한 후)는 호스팅 제어 패널로 가서 ASP.NET 버전을 2.0 클래스에서 4.0 클래식으로 변경했습니다. 문제가 사라졌습니다.

이 오류는 더 이상 프로젝트의 일부가 아닌 페이지에 대해 bin에 .compiled 파일이있는 경우에도 발생할 수 있습니다. 당신은 본질적으로 404 대신 이것을받습니다. .compiled 파일을 제거한 다음 404를 얻습니다.

필자의 경우 'nnn.aspx.xxxxxxxx.compiled'파일은 WebDeploy에 의해 제거되었습니다. 동일한 Jenkins 작업 공간에서 2 개의 동시 작업을 실행했기 때문입니다. 두 번째 작업은 WebDeploy 패키지 생성 중에 일부 파일을 제거했습니다.

이것이 VS 2008의 솔루션입니다.

문제를 해결하려면 아래 그림과 같이 상자를 선택하십시오.

enter image description here

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