sourcecode

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

codebag 2023. 8. 11. 21:48
반응형

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

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

즉, 전체 사이트가 미리 컴파일되어 있습니다.그러나 "Services"라는 이름의 특정 하위 폴더에 있는 .aspx 파일로 이동하면 HttpException:

시스템. 웹.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파일. 이 내용은 bin 폴더에도 있는 특정 어셈블리를 가리키는 것 같습니다.

이 오류가 발생하는 이유는 무엇입니까?.compiled 파일이 있고 어셈블리가 있으며 해당 어셈블리에 해당 유형이 있습니다(Object Browser에서 볼 수 있음)..compiled 파일의 이름이나 내용에 관한 것입니까?혹시 버전이 잘못된 건가요?.compiled 파일 이름에서 겉보기에 임의의 숫자는 무엇을 의미하며 중요합니까?

저는 또한 이 문제가 갑자기 나타났다는 것을 언급하고 싶습니다. 며칠 전에 제대로 작동했기 때문에 어떤 변화가 있을 수 있었는지 확신할 수 없습니다(하지만 제가 아는 한, 아무것도 없습니다).

저는 그런 오류가 없었지만, 약간의 구글링 후에 이 링크를 발견했습니다. 여러분이 아직 그것을 보았는지 모르겠습니다. http://forums.asp.net/t/956297.aspx

편집(키 텍스트 추가):

이 오류는 web.config에 참조가 지정되어 있고 배포 폴더/사이트에 시스템에 설치된 이러한 dll이 포함되어 있지 않거나 bin 폴더에 포함되어 있지 않은 경우에 발생합니다(개인 어셈블리인 경우).예: (assembly="Namespace1 추가)NameSpace2, Version=x.x.x.x, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/) web.config에 이와 같은 어셈블리가 포함되어 있고 배포된 서버에 이러한 어셈블리가 bin 또는 GAC에 포함되어 있지 않으면 이 오류가 발생합니다.

대상 서버에서 어셈블리가 누락된 것이 근본 원인이라는 보고가 있었지만 사용자와 동일한 오류가 발생했습니다.이상하다.

그게 문제일까요?

사이트를 2.0에서 4.0으로 업그레이드했을 때 이 오류가 발생했습니다. 오류는 의 오류로 했습니다.PrecompiledApp.config현의에root디렉토리입니다.그 파일을 삭제하자 사이트가 작동하기 시작했습니다.

누락된 어셈블리를 교체하기 위해 다시 게시하여 문제를 해결한 위의 모든 답변의 각주처럼...이전에 동일한 솔루션으로 이 문제를 해결한 적이 있지만, 다른 사람들에게 도움이 될 수 있는 또 다른 이유를 방금 발견했습니다.

내 사이트에서 실행 중인 AppPool의 "32비트 응용 프로그램 사용" 설정이 false로 설정되었습니다.앱 풀의 "고급 설정" 대화 상자를 통해 이를 true로 변경하여 문제를 해결했습니다.

그것이 다른 불쌍한 멍청이를 도울 수 있기를 바랍니다.

저도 같은 문제에 부딪혔습니다.다음 폴더의 임시 asp.net 파일 폴더에 있는 파일을 삭제하여 문제를 해결했습니다.

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

저는 지난 며칠 동안 이 문제를 해결하기 위해 고군분투하고 있습니다.적어도 저의 경우, 오류 메시지는 완전히 오해를 불러일으켰고 사전 컴파일된 웹 사이트와는 아무런 관련이 없었습니다.거기에는 많은 다양한 답을 주는 기사나 게시물들이 있어서 혼란만 가중시킵니다.저는 개인적으로 이 오류가 주로 참조 누락 또는 잘못된 버전 때문에 발생한다고 생각합니다.문제를 최대한 빨리 해결하려면 이 문제를 제외하거나 누락/잘못된 참조를 수정해야 합니다.

이렇게 하려면 "어셈블리 바인딩 로그 뷰어"라는 도구를 사용해야 합니다.이 도구는 누락된 참조 또는 잘못된 버전을 알려줍니다.누락되거나 일치하지 않는 참조가 있으면 수정하십시오. 그렇지 않으면 App Pool이 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.0" 대신 다른 버전을 살펴봐야 할 수도 있습니다.A"

  3. 서버에서 fuslogvw.exe 실행

  4. 설정을 클릭합니다.."

  5. "디스크에 바인딩 실패 기록"이 선택되어 있는지 확인합니다.

  6. 사용자 지정 로그 경로 사용을 선택하고 상자에 C:\fuslog\logs를 입력합니다.

  7. 확인 클릭

  8. 앱 풀을 재활용/재설정하여 새 바인딩 적용

  9. Refresh를 클릭합니다.이제 여기서 실패한 바인딩을 볼 수 있습니다.

  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에서 고정 이름 지정 및 단일 페이지 어셈블리 사용 확인

이 문제가 해결될 것이라는 것을 알게 될 것입니다!

MSI에서 누락된(웹이 아닌) DLL로 밝혀졌는데, 오류가 발생한 페이지에서 사용된 것으로 추정됩니다.페이지가 확실히 사전 컴파일되었지만 해당 DLL에 대한 참조가 누락되었기 때문에 상당히 오해를 불러일으키는 오류 메시지입니다.

다른 여러 솔루션을 시도한 후 AppPool을 다시 시작하여 이 문제를 해결했습니다.이 경우에는 다시 게시할 수 없습니다.

이 옵션은 저의 문제를 해결해 주었습니다.기본적으로 이전 배포 후 남아 있는 모든 분리 파일을 제거합니다.

Remove additional files at destination

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

스크립트가 프로덕션 폴더를 제대로 삭제하지 못했기 때문에 이전 파일과 새 파일이 함께 혼합되어 오류가 발생했습니다.

전체 폴더를 수동으로 삭제하고 다시 배포했습니다...그런 다음 스크립트를 업데이트했습니다.

저도 오늘 같은 문제가 있었습니다.일부 포럼에서는 웹 사이트에 참조가 누락되어 있으며 귀하의 경우에도 마찬가지입니다.필요한 어셈블리가 모두 포함되어 있음에도 불구하고 3.5 프레임워크가 있는 IIS 서버에 웹 사이트를 배포하고 있었을 수도 있습니다.

제 경우였기 때문에 원래 ASPX 3.5 웹 사이트에서 web.config 파일을 복사하여 일부를 수정하고(다른 3.5 어셈블리 참조를 제거함) 다시 배포해 보았습니다.

이 문제는 여러 가지 이유로 인해 발생할 수 있습니다.잠시 작동하다가 갑자기 언급된 오류가 발생한 페이지에서 제 것이 산발적으로 발생했습니다.과 관련된 였습니다.
스레드는 저에게 맞는 답을 가지고 있었고 저는 또한 그 주변에 제 작업물을 게시했습니다.

제 경우에도 동일한 파일을 다시 배포하여 이 문제를 해결했습니다.

따라서 다른 작업을 시도하기 전에 먼저 앱을 다시 배포해 보십시오(빈 폴더 컨텐츠로 충분해야 함).

BTW: 제 경우 C 드라이브의 공간이 부족할 때 오류가 발생했습니다.

해피 코딩!치텍

오류가 다른 문제에 대해 불평하고 있다는 것을 알지만, 제 경우에는 asp.net 계정이 해당 특정 파일로 작동하기에 불충분한 액세스 권한(네트워크 서비스 또는 애플리케이션 풀 ID 또는 IUSR)이 문제였습니다.

이는 VPS 환경에서 새로 게시된 파일과 함께 bin 파일을 배포하고 혼합하는 것이 비정상적이기 때문입니다.

솔루션:

특정 파일 사용 권한을 Bin 내에서 올바르게 작동하는 다른 파일과 같이 올바른 Bin 폴더 사용 권한으로 대체해야 합니다.

enter image description here

사용 가능한 디스크 공간을 확인하는 것으로 시작합니다.IIS를 호스팅하는 하드 드라이브의 공간이 부족할 때 이 오류가 발생했습니다.

더 이상 프로젝트의 일부가 아닌 페이지에 대한 .compiled 파일이 빈에 있는 경우에도 이 오류가 발생할 수 있습니다.기본적으로 404 대신에 이것을 받습니다..compiled 파일을 제거하면 404가 됩니다.

웹 사이트 루트 폴더 아래에 PrecompiledApp.config라는 파일이 있습니다. updatable="true"를 업데이트한 후 사이트가 다시 작동합니다.

기존 사이트에 몇 가지 변경 사항을 배포했을 때 이 문제에 직면했습니다.

문제를 복구하기 위해 bin 폴더에서 모든 파일을 삭제하고 다시 배포했습니다.

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

이것이 누군가에게 도움이 되기를 바랍니다.

저의 경우 AjaxControlToolkit.dll, Telerik.dll 등과 같은 일반 DLL을 업로드하지 않았습니다.제가 게시된 폴더 전체를 업로드했고 그것은 저를 위해 수정되었습니다.

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

asp.net mvc 면도기 보기(.cshtml)에 대한 오류의 경우, /bin 폴더에는 동일한 보기에 대한 두 개의 .vmvc 파일이 포함되어 있습니다.그들 중 하나는 오래되어 삭제되어야 했습니다.

또한 컨트롤러 뷰 하위 폴더의 두 번째 뷰도 삭제해야 했습니다.

문제의 원인은 컨트롤러 보기 하위 폴더에서 공유 폴더로 보기를 이동했지만 배포 프로세스(Visual Studio Publish)에서 서버에서 사용되지 않는 보기 및 view.compiled 파일을 삭제하지 않았기 때문입니다.Visual Studio에서 항상 대상 폴더를 정리하도록 지시할 수 있지만 이렇게 하면 배포 프로세스가 느려집니다.

마침내, 저는 문제를 발견했습니다.만약 당신이 나처럼 MVC 프레임워크를 사용한다면, 당신의 MVC 버전을 업데이트해주세요.저의 경우 MVC 4.0.0을 4.0.0.1로 변경하고 모든 프로젝트 참조의 "로컬 복사" 속성을 "참"으로 확인했습니다.그 후에 저의 문제는 해결되었습니다.모든 구성 파일(4.0.0->4.0.0.1)의 MVC 버전을 확인하십시오.

그리고 ASP 컴파일러 경고 메시지를 주의하십시오.

VWD Express 2012를 사용하기 시작했을 때(이전에는 정상적으로 작동하던 Express 2010을 사용한 후) 동일한 문제가 발생했습니다. 호스팅 제어판으로 이동하여 ASP를 변경했습니다.그림과 같이 2.0-Classic에서 4.0 Classic으로 NET 버전.문제가 사라졌습니다.

제 경우 'nnn.aspx.xxxxxxxxx.compiled' 파일이 WebDeploy에서 제거되었습니다. 이는 동일한 Jenkins 작업 공간에서 두 개의 동시 작업을 실행했기 때문입니다.두 번째 작업은 WebDeploy 패키지를 만드는 동안 일부 파일을 제거했습니다.

이것이 VS 2008을 위한 솔루션입니다.

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

enter image description here

MSBuild 스크립트를 실행할 때 이 오류가 발생하면 프로젝트가 2.0 또는 3.5 프로젝트이고 MSBuild가 4.0 컴파일러를 사용하고 있을 가능성이 있습니다.추가 시도:

TargetFrameworkMoniker="3.5"

사용자의 AsNetCompiler 지시사항으로 이동합니다.

컴파일 현금이 손상되었거나 응용 프로그램과 일치하지 않을 때 발생합니다.이 문제에는 두 가지 해결 방법이 있습니다.

  • 첫 번째는 IIS에 프로젝트를 다시 게시하는 것입니다.
  • 두 번째는 루트의 web.config 파일을 브라우저 새로 고침 프로그램으로 이동하고 다시 이동하는 것입니다.IIS가 응용 프로그램을 재설정하고 컴파일 캐시를 지웁니다.

언급URL : https://stackoverflow.com/questions/602117/how-to-fix-asp-net-error-the-file-nnn-aspx-has-not-been-pre-compiled-and-can

반응형