오류 : allowDefinition = 'MachineToApplication'이 응용 프로그램 수준 이상


193

ASP.Net에서 온라인 프로젝트를 다운로드했습니다. 응용 프로그램을 실행하는 동안 오류가 발생합니다

응용 프로그램 수준을 넘어 allowDefinition = 'MachineToApplication'으로 등록 된 섹션을 사용하면 오류가 발생합니다. 이 오류는 IIS에서 가상 디렉터리가 응용 프로그램으로 구성되지 않아 발생할 수 있습니다.

이 작업을 수행하기 위해 web.config 또는 다른 곳에서 어떤 변경을해야합니까?


53
웹에서 찾은 답변 중 어느 것도 나를 위해 일하지 않았습니다. 모든 숨겨진 파일 / 폴더를 표시하고 폴더를 삭제하여 문제를 해결했습니다 obj.
머핀 맨

6
이 문제는 여전히 VS2012에서 나타납니다. Microsoft에서 버그 보고서를 열었습니다. 문제가 발생하면 누구나 버그 보고서 connect.microsoft.com/VisualStudio/feedback/details/779737/…를 투표하십시오.
Eric J.

4
obj 폴더를 삭제하면이 문제가 해결되었습니다. 감사합니다 @ 닉! (부흥에 죄송합니다)
Jordan Wayne Crabb


필자의 경우 하위 폴더의 여분의 web.config로 인해이 문제가 발생합니다. 여분의 web.config를 제거하면 오류가 사라집니다
Dio Phung

답변:


96

방금이 "기쁨"이 발생했습니다. 릴리스 모드에서 웹 응용 프로그램을 게시 한 직후에 나타납니다.

내가 찾은 문제를 지속적으로 해결하는 유일한 방법은 다음 점검표를 따르는 것입니다.

  1. 솔루션이 릴리스 모드로 구성되어있는 동안 솔루션을 정리하십시오.
  2. 솔루션이 디버그 모드로 구성되어있는 동안 솔루션을 정리하십시오.
  3. 솔루션이 디버그 모드로 구성되어있는 동안 빌드하십시오.

18
나에게도 효과가있는 대답 만. 이 이후에 나를 기다리는 다른 많은 오류가 있었지만 관련이 없었습니다. 로 설정 MvcBuildViews하여 여기에 도착 했습니다 true.
Benjamin

+1 BTW : 이것이 나를 위해 일한 이유는 내가 가진 가장 최근의 빌드가 디버그 였기 때문이라고 생각합니다 . 솔루션을 열고 버그 수정을 수행하고 R 릴리스 모드 에서 빌드를 시도했습니다 . 릴리스 에서 정리가 작동하지 않았지만 디버그 에서 정리가 수행되었습니다 . (아마도 2의 콤보가 필요했습니다. 즉 , 디버그 또는 릴리스 여부에 관계없이 dll에 대한 이전 참조를 지우십시오 ).
Scotty.NET

4
나는 정리 를 한 다음 * project properties->
Web-

디버그 모드에서 깨끗하고 재구성하면 나에게 필요한 모든 것입니다. 릴리스와 디버그간에 전환 할 필요가 없습니다. 그러나 예, CLEAN은 매우 중요합니다. 그것이 문제의 핵심입니다.
markaaronky

1
내가 본 적이없는 깨끗한 경우에는 사용할 수 없습니다. 이것은 이전 동료로부터 상속받은 매우 오래된 VB.NET 응용 프로그램입니다.
tnk479 2016 년

82

이 게시물을 보러 와서 저에게 일어난 일입니다.
그냥 Clean프로젝트 및 오류가 사라집니다. (VS2010 버그 여야 함)


Visual Studio 에서이 오류가 발생하면이 솔루션을 찾으십시오.
기드온

22
때때로 정리가 obj폴더를 지우지 않습니다 . 때로는 삭제도 필요합니다.
jaypeagi

1
obj 청소 또는 삭제가 작동하지 않았습니다. Johnny Reilly의 솔루션이 저에게 효과적이었습니다.
Benjamin

이것을 제거하기 위해 디버그 모드와 릴리스 모드 모두에서 깨끗하게 실행해야했습니다. 디버그만으로 실행하면 문제가 해결되지 않는 것 같습니다.
Juha Palomäki

VS2013SP1에도 동일한 문제가 있습니다. 간단하게 정리하면 다시 배포 할 수 있습니다.
Brian Knoblauch

25

내 웹 사이트의 두 번째 버전을 만들 때이 문제가 발생했습니다. 처음 건축했을 때는 일어나지 않았습니다.

방금 bin 및 obj 폴더를 삭제하고 클린 솔루션을 실행 한 다음 아무 문제없이 다시 빌드했습니다.


2
이것은 VS Express 2012 for Web에서 나를 위해 일한 유일한 솔루션입니다. 또한 솔루션 구성을 생성하고 .csproj 소스의 PropertyGroup에 MvcBuildViews를 true로 설정 한 후에 만이 오류가 발생하기 시작했습니다.
Jeremy Cook

20

없음 IIS 내 에서 사이트를 웹 응용 프로그램 으로 배치 한 디렉토리를 설정해야 합니다 .


1
기술적으로는 "이 작업을 수행하는 다른 곳"의 변화이지만;)
Zhaph-Ben Duguid

2
그리고 이것이 웹 응용 프로그램에서 오류로 발생하면 해결책입니다! = P
기디언

이미 응용 프로그램으로 설정되었습니다. Johnny Reilly의 솔루션이 제 경우에 효과가있었습니다.
Benjamin

템플릿 Webforms 앱이 작동하도록하려고합니다. LAN의 서버에는 없지만 localhost에는 문제가 없습니다. 이 솔루션은 저에게 효과적이었습니다 .VS2015 CE, LAN의 Windows Server 2008. 이 MS 페이지를 사용하여 IIS에서 수행 할 작업을 설명합니다 : support.microsoft.com/en-gb/kb/917413 . 템플릿 코드가 변경되지 않았습니다.
Tim

16

이 오류는 프로젝트를 웹 사이트로 열려고 할 때 발생합니다. 웹 사이트 또는 프로젝트를 만들 었는지 확인하는 가장 쉬운 방법은 솔루션 폴더 (예 : 코드를 저장 한 위치)를 확인하고 루트 디렉토리에 * .sln 파일이 있는지 확인하는 것입니다. ve는 프로젝트를 만들었습니다.

추가하기 위해 Visual Studio 메뉴에서 "파일", "웹 사이트 열기"를 선택하여 "파일", "프로젝트 열기"를 선택해야했던 프로젝트를 열려고 할 때이 오류가 발생했습니다. 대신에. 내가 깨달았을 때 나는 얼굴을 pal 다 :)


이것은 나의 문제이기도하다
mgrenier

13

Visual Studio 2013에서는 잠시 동안이 문제로 어려움을 겪었으며 "IIS에서 응용 프로그램으로 구성되지 않은 가상 디렉터리" 라는 예외를 따르는 것이 매우 쉽습니다.

내 경우에는 내가했던 WebService내부에 심어 IIS website그래서

  1. IIS 관리자에서 웹 사이트를 열었습니다.
  2. WCF 폴더를 마우스 오른쪽 버튼으로 클릭
  3. 클릭 Convert to Application
  4. 그리고 함께 제출 Ok

WCF가 다시 시작되었습니다.


1
응용 프로그램을 기본 웹 사이트로 옮길 때이 문제가 발생했습니다. 포인트 3은 내 문제를 해결하기위한 트릭을 수행했습니다.
bikram s.

우리가 새로운 웹 서버로 옮길 때 이것은 나를 위해 일했습니다. "응용 프로그램으로 변환"을 수행 한 후 폴더 기호가 변경되고 ASP.NET MVC webapp가 해당 웹 서버에서 작업을 시작했습니다.
Greg Barth

11

이 오류는 사용중인 코드가 IIS에서 가상 디렉터리가 설정 될 것으로 예상 함을 나타냅니다.

문서를 찾아 필요한 가상 디렉토리를 추가하십시오. web.config루트 디렉토리가 아닌 디렉토리가 있어야합니다 .


8
하위 디렉토리에서 두 번째 web.config를 제거하면 문제가 해결되었습니다.
Lucas B

10
내 친구들 중 하나는 자신을 가지고 <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>자신의 Web.config에서 Views이 문제의 원인보다는 트렁크 폴더.
Serj Sagan

10

뷰 빌드가 활성화 된 MVC 프로젝트가있는 경우 솔루션 중 하나는 빌드 전에 obj 폴더를 삭제하는 것입니다. 프로젝트 파일에 추가 :

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

다음은 기사입니다. 빌드 또는 배포 전에 bin 및 / 또는 obj 폴더를 제거하는 방법


8

최근 web.config 변경이 잘못된 web.config 파일에있을 수 있습니다.

<machineKey...>속성이 추가되었다 조회수 /의 Web.config . 정리 및 재 구축 횟수에 관계없이 오류가 남아 있습니다. 수정은 속성을 루트 /web.config 로 이동하는 것이 었습니다 .


실수로 상위 Web.config를 / Views 폴더에 복사했습니다. Views 폴더의 원본보다 훨씬 작은 버전을 거기에 넣으면 사이트가 다시 작동했습니다.
Grandizer

6

이 오류가 발생하면

응용 프로그램 수준을 넘어 allowDefinition = 'MachineToApplication'으로 등록 된 섹션을 사용하면 오류가 발생합니다. 이 오류는 IIS에서 가상 디렉터리가 응용 프로그램으로 구성되지 않아 발생할 수 있습니다.

해결 방법
VS 2012와 동일한 문제가있었습니다.

  1. 현재 프로젝트를 언로드하십시오
  2. .csproj를 편집하십시오
  3. 이것을 찾으십시오 <MvcBuildViews>false</MvcBuildViews>
  4. false 대신 값을 true로 변경하십시오.
  5. 프로젝트를 다시로드하면 더 이상이 오류가 발생하지 않아야합니다

그렇다면 하나의 해결책은 컴파일러가 생성 한 프로젝트에서 obj 폴더의 내용을 삭제하는 것입니다.


18
즉 설정, 이상한 MvcBuildViewstrue내가 처음에 오류가 발생했습니다 방법이다.
Benjamin

또한 MvcBuildViews를 true로 변경 한 후 오류 메시지가 표시되기 시작했습니다. 값을 다시 false로 변경하여 오류 메시지를 제거했습니다.
Juha Palomäki

3
릴리스 및 디버그 모드 모두 에서 "청결한 솔루션"을 수행했으며 이제 빌드도 함께 작동합니다.<MvcBuildViews>true</MvcBuildViews>
Juha Palomäki

@ JuhaPalomäki 슈퍼 달콤한! 감사.
Haroon

@visar_uruqi와 정확히 반대되는 상황이있었습니다. 내 .csproj 파일 에서 MvcBuildViews 옵션이 true로 설정되어 있고 false로 설정하면 오류가 생략되었습니다 (표시되지 않음).
Bronek

5

필자의 경우 하위 디렉토리에 프로젝트게시 한 후에 만 문제가 발생했습니다 . 지식이 부족하여 web_publish하위 디렉토리를 디렉토리 안에 넣었습니다 web_project.

또한 프로젝트에 포함 된 web_publish것과 같은 것이 포함되어 있음이 분명합니다 Web.config. 그러나 중첩 하위 디렉토리에서 s를 검색 할 때 피해야한다는 web_project것을 알지 못합니다 . 이런 식으로 s가 복제되고 오류가 나타납니다.web_publishWeb.configWeb.config

해결책은 web_publish다른 곳 을 배치하는 것이 었습니다 .


5

필자의 경우 전체 웹 사이트의 다른 복사본이 들어있는 "백업"폴더가있었습니다. 이것은 다른 것을 의미 web.config하므로 빌드 가이 오류로 실패했습니다. "백업"폴더를 삭제하고 디버그 및 릴리스 빌드에서 클린 솔루션을 수행 한 후 오류가 사라졌습니다.


비슷한 상황이 발생했습니다. 누군가가 디스크의 웹 사이트 루트 내에 "게시 된"하위 폴더 (솔루션 파일이없는 오래된 웹 프로젝트)를 만들었으며 여기에는 Web.config가 있습니다. Visual Studio에서 빌드하려고 할 때 오류가 발생했으며 "obj"폴더 정리 / 삭제 등은 물론 해결되지 않았습니다. 이 오류가 발생하는 사례가 꽤 많았습니다. 거의 항상 중복 Web.config가 어딘가에 숨겨져 있습니다. (실제로 잘못된 오류 메시지도 있습니다!)
Detail

4

나의 경우에는,

솔루션에는 6 개의 프로젝트, 1 개의 기본 및 5 개의 하위 디렉토리가 있습니다. web.config가있는 모든 하위 디렉토리

하위 디렉토리 내에서 페이지를 실행할 때 동일한 오류가 발생했습니다.

web.config에서이 줄을 제거했습니다.

<authentication mode="Windows"/>

그것은 나를 위해 일했다.


어떤 라인을 제거 했습니까?
Mark Berry

줄은 거기에 있지만 들여 쓰기 문제로 인해 표시되지 않습니다. 코드를 편집하여 코드 블록에 붙여 넣었습니다. 이제 표시됩니다. 내가 무언가를 도울 수 있는지 확인하고 알려주십시오.
p_champ

고마워, 그것은 나에게도 실패하고 있음을 확인시켜줍니다. 하나의 사이트 만 있으므로 프로젝트가 아닌 웹 사이트로 열어서 사이트를 둘러 보았습니다.
Mark Berry

4

프로젝트 정리 / obj 폴더를 제거하십시오 (아마도 게시 및 배포를 사용하고 있습니까? 버그가 있습니다)


나를 위해 일한 유일한 솔루션. <MvcBuildViews> true </ MvcBuildViews>를 설정하여 여기에 왔습니다.
Paul

3

내 문제는 실수로 웹 서비스를 VS2010을 새로 설치할 때 미리 완성 된 위치에 게시했다는 것입니다.

PreCompiledWeb 이라는 폴더에 게시 했으며 web.config가 있으면 엉망이 된 것 같습니다.

단순히 폴더를 숨기고 프로젝트를 새로 고쳤습니다.

이 오류를 두 번 클릭하면 잘못된 web.config 파일로 이동하여 도움이되었습니다.


2

.Net framework 2.0 프로젝트를 다운로드하여 VS2008로 열고 싶을 때 버전 문제 일 수 있습니다. 그러면 최신 버전으로 업그레이드해야하며 VS는 동일한 루트 디렉토리에 폴더의 백업을 생성합니다. 여기 에 답을 얻으 십시오 .


ranganh의 답변은 여기에 더 자세한 내용을 제공합니다.
Mark Berry

2

솔루션에 웹 배포 프로젝트를 만들어 솔루션을 빌드 할 때이 오류가 발생했습니다. 웹 배포 프로젝트가 구축 된 폴더를 삭제하여 오류를 해결합니다. 이 폴더는 WDP 속성의 "프로젝트 폴더"속성에 지정되어 있습니다.


2

bin 및 obj 폴더를 삭제하십시오. 그런 다음 솔루션을 다시 빌드하십시오.


파일 탐색기의 경우 검색 쿼리 "obj"kind : = folder 및 "bin"kind : = folder를 사용하여 이러한 폴더를 찾거나 삭제하십시오. 이것은 나를 위해 일했습니다.
Robert J. Good

2

내 솔루션에는 두 개의 web.config 파일이 있습니다. MVC4를 사용하고 있으며 Views 아래에 다른 구성 파일이 있었고 잘못된 파일을 변경했습니다. 거기에 도움이되었습니다.

그러나 global.asax 파일에서 항상 기본 리디렉션 / 라우트를 변경할 수 있습니다.


1

가상 폴더로 구성되지 않은 프로젝트 폴더 내에 하위 asp.net 프로젝트 폴더가있을 수 있습니다. IIS에서 실행되도록 프로젝트를 설정하십시오.



1

프로젝트 파일에서 "true"가 활성화 된 경우이 문제가 더 자주 발생합니다.

  1. 거짓으로 설정

조니의 말 :

  1. 솔루션이 릴리스 모드로 구성되어있는 동안 솔루션을 정리하십시오.
  2. 솔루션이 디버그 모드로 구성되어있는 동안 솔루션을 정리하십시오.
  3. 솔루션이 디버그 모드로 구성되어있는 동안 빌드하십시오.

1

웹 응용 프로그램이되고 싶지 않은 프로젝트를 폴더로 만들고 싶었습니다. 대답은 web.config 파일을 모두 삭제하는 것이 었습니다. 응용 프로그램의 루트에만 속합니다.


1

일부 서버에 웹 사이트 또는 응용 프로그램을 게시하는 동안이 문제가 발생하면 파일을 포함하는 폴더를 웹 응용 프로그램으로 변환하는 간단한 방법이 사용되었습니다.


4
안녕하세요, Stack Overflow에 오신 것을 환영합니다! 답을 넓힐 수 있습니까? 폴더를 웹 응용 프로그램으로 변환하는 방법을 설명해 주시겠습니까? 다른 사람들이 귀하의 답변을 더 잘 이해하는 데 도움이됩니다.
Jesse

1
IIS 관리자의 오른쪽 연결 창 아래에서 만든 사이트 (또는 기본 웹 사이트) 아래의 디렉터리를 마우스 오른쪽 단추로 클릭하고을 선택합니다 Convert to Application.
Aske B.

1

프로젝트를 디버그 모드로 게시 한 후 VS 2013에서 동일한 문제가 발생했습니다. obj / 파일을 제거하여 문제가 해결되었습니다.


1

웹 사이트 프로젝트가 있습니다.

필자의 경우 솔루션 파일을 다른 경로로 이동하여 문제가 발생했습니다. 이전 위치로 복원했는데 문제가 발생했습니다.


1

여전히 찾고있는 사람이라면 내 솔루션은 bin 및 obj 폴더를 모두 삭제하고 Visual Studio를 다시 시작하면 문제가 해결되는 것 같습니다.


1

Visual Studio 를 통해 FTP를 통해 WCF 서비스를 외부 서버에 게시했습니다 . 로컬에서는 물론 내부 서버에 게시 할 때 외부에서는 제대로 작동하지 않았습니다. 해결책은 (즉, 가상 디렉터리의 루트에 직접 게시)를 제공하지 않고 게시하는 것 Site Path 입니다.

파일이 이미 외부 FTP 클라이언트를 통해 루트로 이동하려고 시도했기 때문에 왜 이것이 효과가 있었는지 잘 모르겠습니다. 여기에 나열된 모든 것을 포함한 많은 시도가 있습니다. 아마도 FabianVal 과 같은 게시 프로파일에 관한 것일 수 있습니다. 그러나 나는이 문제에 대해 하루 종일 낭비 한 후에 서두르 기 때문에 더 이상 테스트하기를 원하지 않습니다.


0

팁 1 : 청소 및 재 구축

팁 2 : VS를 닫았다가 다시 엽니 다.

팁 3 : 다운로드 한 프로젝트가 다른 하위 폴더 안에있을 수 있습니다. .net 파일이있는 폴더를여십시오.

c : / demo1 / demo / (모든 파일)

demo1이 아니라 vs ...에서 데모를 열어야합니다.


0

위의 모든 솔루션을 시도했지만 그 중 어느 것도 내 문제에 효과가 없었습니다. (이 문제에 대한 솔루션이 1000 개라고 확신합니다.) 시나리오에서 테스트중인 WCF 웹 서비스를 프로덕션에 게시하려고했습니다.

그러나 프로덕션 환경에서 우리는 HTTPS 전용이라는 것을 깨닫지 못했습니다. 즉 모든 것을 HTTPS로 리디렉션합니다. 결과적으로 HTTPS 대신 HTTP를 통해 서비스를 가리 키므로 오류가 발생했습니다. 이 시나리오의 솔루션은 단순히 주소 프로토콜을 HTTP가 아닌 HTTPS로 변경하는 것입니다.

나는이 문제를 알아 내려고 노력하는 가난한 영혼을 도울 수 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.