prosource

allowDefinition='MachineToApplication'으로 등록된 섹션을 응용 프로그램 수준을 초과하여 사용하는 동안 오류가 발생했습니다.

probook 2023. 5. 13. 10:19
반응형

allowDefinition='MachineToApplication'으로 등록된 섹션을 응용 프로그램 수준을 초과하여 사용하는 동안 오류가 발생했습니다.

다으로등록섹사션것다로 등록된 입니다.allowDefinition='MachineToApplication'적용 수준을 초과합니다.

aspx 페이지에 의 맨 위 줄./portal/디렉터리에 이 오류 메시지가 있으며, 일반적인 오류 메시지인 것으로 알고 있습니다.나는 이 오류 메시지를 끝까지 구글에 검색했고, 나는 나에게 그것을 구성하라고 말하는 많은 게시물을 봅니다./portal/IIS가 가지고 있는 프로그램으로 및 IIS( 있는)가 중첩되었다는 이 더 .web.config을 제공하지 .) s (해결책에 대한 지침을 제공하지 않습니다.)

내 설정은 다음과 같습니다.web.config디렉터리에서 ▁the,▁in▁portal,있다▁a▁directory고,노./portal/디렉토리입니다./portal/.web.config.

web.config 라인 50은 다음과 같습니다.

<customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
<anonymousIdentification enabled="true"/>
<authentication mode="Forms"/>
<membership defaultProvider="MyProvider">

그래서 저는.domain.example/web.config그리고.domain.example/portal/web.config그래서 나의domain.example/portal/default.aspx페이지가 로드되지 않습니다.

이것에 대한 진정한 해결책은 무엇입니까?을 찾을 수 요?web.config의 와함께와 ./portal/web.config아니면 제가 여기서 많이 빗나갔나요?

배경 정보, ASP에 대한 구성 정보용입니다.NET 웹 사이트는 하나 이상의 Web.config 파일에 정의되어 있습니다.구성 설정은 계층적 방식으로 적용됩니다.서버의 웹 이은 웹 서버에 있는 웹.config에 있습니다.%WINDIR%\Microsoft.Net\Framework\version\CONFIG폴더를 누릅니다.웹 사이트의 루트 폴더에 Web.config 파일을 둘 수도 있습니다.이 Web.config 파일은 "global" Web.config 파일에 정의된 설정을 재정의하거나 새 설정을 추가할 수 있습니다.또한 웹 사이트의 하위 폴더에 새 구성 설정을 정의하거나 상위 계층의 Web.config 파일에 정의된 구성 설정을 재정의하는 Web.config 파일이 있을 수 있습니다.

Web.config의 특정 구성 요소는 응용 프로그램 수준 이상으로 정의할 수 없습니다. 즉, "global" Web.config 파일 또는 웹 사이트의 루트 폴더에 있는 Web.config 파일에 정의되어야 합니다.<authentication>요소가 그러한 예 중 하나입니다.위의 오류 메시지는 웹 사이트의 하위 폴더 중 하나에 응용 프로그램 수준을 초과하여 정의할 수 없는 구성 요소 중 하나가 있는 Web.config 파일이 있음을 나타냅니다.

출처: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

두 가지 가능한 접근 방식을 올바르게 식별했습니다.

- 두 web 동일한 방법에 1 - " " " " web.config" " " " " " " " 를 합니다." " " " " " " " " " " " " "<authentication>상위 web.는 web.config 파일에 있습니다.

2 - web.config 콘텐츠를 병합할 수 없는 경우 아래 링크 아카이브 링크에 포함된 단계를 수행하여 하위 폴더를 IIS의 웹 응용 프로그램으로 전환할 수 있습니다.원래 링크가 더 이상 작동하지 않습니다.(보관된 항목 참조)

"allowDefinition='MachineToApplication'으로 등록된 섹션을 애플리케이션 수준을 초과하여 사용하는 것은 오류입니다."라는 오류 메시지를 받은 후 \myWebApp\obj\Debug 및 \myWebApp\obj\Release 디렉토리를 삭제하여 문제를 해결했습니다.또한 기본 시작 페이지를 설정해야 했습니다.하지만, 그 후 앱이 잘 시작되었습니다.HTH.

RY4N이 위에서 말했듯이 문제의 원인은 반드시 Project 폴더의 web.config가 아닙니다.경우에 따라 디버그 프로필에서 빌드를 실행하면 해당 프로젝트의 디버그 폴더에 디버그가 남아 있습니다.이후 릴리스 프로파일에서 빌드를 실행할 때 위의 오류로 이어지는 web.config 파일이 여기에 있는 경우가 많습니다.

여기서 사용할 수 있는 해결책은 이전 빌드가 프로젝트 디렉터리 아래에 생성한 전체 디버그 폴더를 삭제하는 것입니다.

이 문제는 가정용 컴퓨터에서도 발생했지만 릴리스 구성에서 빌드 보기를 활성화하고 릴리스 구성을 구축한 경우에만 발생했습니다.그렇지 않으면 그것은 일어나지 않았습니다.

Build Views 옵션은 매우 좋지만 이 "오류"가 항상 나타나고 앱을 실행할 수 없게 되기 때문에 비활성화하게 되었습니다.

그냥 말입니다.

업그레이드하는 경우(예: 2008 -> 2010) 프로젝트 Visual 스튜디오가 새 솔루션에 추가된 프로젝트 솔루션에 백업을 생성합니다(허용하는 경우). 이전 웹 구성은 위에서 지적한 오류가 발생할 수 있는 부분입니다.

"웹 사이트의 하위 폴더하나에 있는 Web.config 파일에는 응용 프로그램 수준을 초과하여 정의할 수 없는 이러한 구성 요소 중 하나가 있습니다."@benni_mac_b

수정 방법: 이 시나리오에서는 프로젝트 및 솔루션에서 백업 폴더를 제거하기만 하면 됩니다.

저는 이것이 일어나는 또 다른 가능한 이유를 생각해냈습니다.

저는 2.0에 더 오래된 웹 애플리케이션을 구축했습니다.4.5 솔루션으로 마이그레이션했습니다.

Visual Studio 내부에서 응용 프로그램을 빌드하고 디버깅하는 데 문제가 없었지만 웹 응용 프로그램을 게시하려고 시도했을 때 이 오류가 반복적으로 발생했습니다.

web.config 파일에 대한 Build Action이 "Content"가 아닌 "Embedded Resource"라는 문제를 마침내 발견했습니다.또한 Copy To Output 디렉토리는 "복사하지 않음"이 아닌 "항상 복사"로 설정되었습니다.이러한 설정이 언제 만들어졌는지는 알 수 없지만, 애플리케이션 2.0 버전으로 돌아간 것 같습니다.

web.config 파일의 설정을 수정하면 Visual Studio 2012 게시에서 게시 작업이 문제 없이 작동할 수 있습니다.

저도 MVC 프로젝트에서 같은 문제를 겪었습니다.게시를 시도할 때 오류가 발생했습니다.는 비어를 포함하지 함).web.config).

중입니다.Clean날 위해 속임수를 쓰지 않았어요

나는 청소를 함으로써 문제를 해결했습니다.obj빌드하기 전에 폴더를 만듭니다(어쨌든 제 경우 프로젝트를 빌드하는 데 그렇게 오래 걸리지 않을 것입니다.

프로젝트를 언로드하고 다음을 빌드 전 대상에 추가했습니다.

<Target Name="BeforeBuild">
    <Delete Files="$(SolutionDir)\$(ProjectDir)\bin\**\*.*" />
    <Delete Files="$(SolutionDir)\$(ProjectDir)\obj\**\*.*" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\bin" />
    <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\obj" />
    <Message Text="Clean obj/bin from web project" />
</Target>

이것이 도움이 되길 바랍니다.

응용 프로그램을 게시하는 동안에만 이 오류가 발생했습니다.

web.config(및 변환) 파일의 속성은 다음과 같이 설정되었습니다.

  • Build Action - None
  • Copy to Output - Always.

솔루션은 다음으로 설정을 변경하는 것이었습니다.

  • Build Action - Content
  • Copy to Output - Do not Copy

"allowDefinition='MachineToApplication'으로 등록된 섹션을 애플리케이션 수준을 넘어 사용하는 것은 오류입니다.이 오류는 가상 디렉터리가 IIS에서 응용 프로그램으로 구성되지 않았기 때문에 발생할 수 있습니다."

VS에서 이런 문제가 있었습니다.NET. 일부 구성 변환을 구성할 때 Web.config 파일의 속성을 "항상 복사"로 잘못 설정한 것으로 나타났습니다.저는 보통 변환 파일을 "항상 복사"로 설정하지만 web.config 루트 파일은 "복사 안 함"으로 유지합니다.

web.config의 속성을 변경하면 중첩된 모든 변환도 변경되므로 주의하십시오.

다음을 수정합니다.

web.config를 "복사하지 않음"으로 변경합니다.

선택적으로 구성 변환을 사용하는 경우 "항상 복사"로 설정합니다.

솔루션에서 obj 및 bin 폴더를 삭제합니다. 폴더가 표시되지 않을 수 있으므로 솔루션 탐색기에서 프로젝트 노드를 선택하고 "모든 파일 표시" 도구 모음 단추를 클릭합니다.

게시

나를 위해 일했습니다.

를클니다합을 합니다.Web.configSolution Explorer에서 파일을 선택하고 "속성"을 마우스 오른쪽 단추로 클릭한 다음 "출력 디렉터리에 복사: 복사 안 함"으로 변경합니다.

여기에 이미지 설명 입력

또한 이 문제가 있었는데 게시 마법사를 사용하여 사이트를 웹에 게시한 후에 발생했습니다.

한참을 둘러본 후에 저는 Connect 웹사이트 https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level 에서 이 버그 보고서를 발견했습니다.

MS 담당자는 답변을 했고 왜 이것이 문제가 발생했는지 설명할 뿐만 아니라 출판 시 문제를 해결하는 임시 해결책도 포함했습니다.

가상 디렉터리를 삭제하고 다시 만듭니다.마우스 오른쪽 버튼을 클릭하고 가상 디렉터리를 "응용 프로그램"으로 변환

다음과 같은 이유가 있습니다. 전체 웹 앱을 자체 하위 폴더 중 하나에 복사하면 이 오류가 발생합니다.한 기계에서 다른 기계로 복사할 때 이전 사이트에 이 작업을 수행할 수 있었습니다. 약 2년 후 사이트를 살펴보라는 요청을 받고 오류가 발생했습니다.여러 개의 구성 파일이 없었기 때문에 꽤 오래 걸렸습니다.

나에게 이유는 obj 폴더가 웹 사이트 폴더 아래에 있고 여러 구성을 구축한 후 여러 web.config가 나타났기 때문입니다.저는 2012년 대 2012년 문제를 웹 사이트에서 obj 폴더로 이동하여 해결했습니다.이를 위해 수동으로 (메모장에) $(SolutionDir)를 추가했습니다.\Obj\$(구성)을 웹 사이트 프로젝트 파일의 모든 구성에 적용합니다.

사이트를 게시할 때도 동일한 문제가 발생했습니다. 사이트를 구축하면 문제가 발생하지 않지만 게시하는 동안 다음과 같은 심각한 오류가 발생합니다.

"allowDefinition='MachineToApplication'으로 등록된 섹션을 애플리케이션 수준을 넘어 사용하는 것은 오류입니다.이 오류는 가상 디렉터리가 IIS에서 응용 프로그램으로 구성되지 않았기 때문에 발생할 수 있습니다."

저는 여기 이 게시물에 명시된 모든 것을 시도했지만, 제게 효과가 있었던 것은 제가 사용했던 것과 정확히 동일하고 잘 작동하는 새 게시 프로필을 만드는 것이었습니다. 새 프로필에 오류가 발생하지 말고 이전 프로필을 사용하십시오.차이점이 무엇인지는 잘 모르겠지만 적어도 저는 제 MVC 프로젝트를 게시할 수 있습니다.

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

저는 이 문제를 겪었고, 오래된 조립품 등의 솔루션을 청소함으로써 해결했습니다.

출처 대: 빌드 > 클린 솔루션

그런 다음 다시 빌드합니다.

Windows start -> open sites -> IIS -> 자신의 사이트를 마우스 오른쪽 버튼으로 클릭합니다 -> Manage Web Site -> Advanced Setting -> browse Physical Path -> 현재 선택하고 있는 의 하위 폴더를 선택합니다.

하위 폴더 내의 웹 구성 파일이 변경을 시도하고 있으며 이 파일은 허용되지 않으며 선택된 폴더여야 한다는 논리입니다. http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

또한 웹 사이트에 하위 웹 사이트를 배포하려고 할 때 이 오류가 발생합니다.

솔루션은 다음과 같습니다.

  1. subweb.config에서 profile, membership, roleManager, sessionState같은 일부 구성 탭을 제거해야 합니다.
  2. 을 없음으로합니다.<authentication mode="None" />
  3. 그리고 IIS로 이동하여 하위 폴더 -> 응용프로그램 추가를 마우스 오른쪽 단추로 클릭합니다.
  4. 이 문제를 해결하려면 IIS를 재설정하십시오.

다른 문제가 발생하면 주저하지 말고 저에게 연락해 주십시오. 제가 도와드릴 수 있을지도 모릅니다.

괜찮았습니다.localhost하지만 서버에 릴리스를 게시했을 때 몇 페이지 동안 동일한 오류가 발생했습니다.그런 다음 솔루션을 정리하고 리빌드 및 퍼블리싱을 수행하여 문제가 해결되었습니다.

Visual Studio 2017의 localhost에서 이 오류가 발생하여 Visual Studio를 다시 시작하면 문제가 해결되었습니다.

예를 들어 하위 폴더에 하나 이상의 web.config가 있는 경우에도 이 문제가 발생할 수 있다는 것을 알고 있습니다.다른 응용 프로그램을 위한 web.config 파일이 여러 개 있는 경우: 디렉터리가 가상 디렉터리로 표시되지 않는지 확인합니다.

오류를 클릭하면 열리는 web.config 경로를 확인합니다.일부 node_modules(node_module\selenium_webdriver\lib\test\data\web.config)에도 web.config 파일이 있을 수 있습니다.

obj와 bin을 직접 삭제하고 문제를 즉시 수정합니다.

localchost/mysite를 통해 로컬 사이트에 잘못 액세스하는 함정에 빠지지 않도록 하십시오.내 사이트여야 하는 테스트. 오류를 제공하는 테스트.

localhost/dir_name과 같이 사이트에 액세스하면 web.conf가 루트 수준 아래로 떨어져 이 오류가 발생합니다.

앱을 마이그레이션하는 중이었는데 앱 안에 여러 개의 앱(여러 웹.config)이 있었습니다.IIS로 들어가서 하위 폴더를 마우스 오른쪽 단추로 클릭한 다음 "응용 프로그램으로 변환"하면 작동했습니다.

이 오류는 다른 모든 오류와 다르게 발생했습니다.

웹 배포 프로젝트를 사용하여 vs2010에서 vs2012로 마이그레이션하고 새 웹 게시 프로필을 작성했습니다.

저는 2012년 vs. 2012년에 파일 시스템에 게시하기 위해 새로운 웹 게시 프로젝트를 만들었고(우리는 별도의 설치 관리자 작성기를 가지고 있습니다. 이것은 상용 앱입니다.) IIS에 연결된 기존 웹 프로젝트 내의 폴더에 게시하고 있었습니다.

이로 인해 게시 도중 오류가 발생하여 처음에는 IIS가 아닌 파일 시스템에 게시했기 때문에 혼란스러웠습니다(생각했습니다.

해결책은 게시 대상 폴더를 웹 프로젝트 외부로 변경하는 것이었습니다.

때로는 간단한 대답이 가장 좋습니다.프로젝트에 web.config 파일이 두 개 있었습니다.주요 수준의 문제는 세션 제한 시간(이 문제를 유발함)을 처리하기 위해 변경해야 했던 부분입니다.Razor Views 디렉토리에 별도의 구성 파일이 있었는데, 여기에는 Razor 및 Razor 보기에 대한 설정이 있었습니다.저는 거기에 섹션을 추가하고 있었습니다(애플리케이션 수준이 아닙니다!).두 개의 web.config 파일이 있다는 것을 깨닫지 못한 채, 저는 명백한 것을 찾는 것을 제외하고 모든 것을 시도했습니다.

제 실수는 실수로 웹 서버의 다른 폴더 안에 web.config를 복사하여 붙여넣은 것입니다.

게시된 프로젝트를 IIS 내의 응용 프로그램으로 변환하는 것을 잊어버렸을 때 이 오류가 발생했습니다.

저의 경우 웹 애플리케이션 내부의 이전 폴더에 다른 Web.config 파일이 있다는 것을 발견했습니다. 이전 web.config 파일을 삭제하기만 하면 모든 것이 정상입니다.

작동 중인 프로젝트와 위의 문제가 있는 프로젝트를 비교하여 다음과 같이 변경했습니다.이것으로 저의 문제가 해결되었습니다.

시작:

  <Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
  </Target>

받는 사람:

  <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
  </Target>

언급URL : https://stackoverflow.com/questions/9300927/error-to-use-a-section-registered-as-allowdefinition-machinetoapplication-beyo

반응형