IIS 7의 ASP MVC 결과 : HTTP 오류 403.14-금지


146

ASP MVC 웹 프로젝트를 개발 중입니다. 이제 IIS7 개발 초기 단계 (일부 기능 확인)에 배포해야하는 요구 사항이 있습니다. 웹 사이트의 URL을 입력하려고 할 때마다 위에서 언급 한 오류 메시지가 나타납니다. (참고 : 개발 시스템 : Vista Home Premium, IIS7)

내가 지금까지 한 일 :

HOSTS 파일 (C : \ WINDOWS \ system32 \ drivers \ etc \ hosts)을 편집했습니다.

두 개의 도메인을 넣습니다 (127.0.0.1 domain1.com 및 127.0.0.1 domain2.com).

c : \ websites \ dirOfApplication 폴더를 만들고 Visual Studio 8에서이 폴더로 배포했습니다.

IIS7에서 호스트 이름 domain1.com 및 위의 응용 프로그램 폴더로 새 사이트를 만들었습니다.

웹 브라우저에 domain1.com 주소를 입력하면 위의 오류가 발생합니다 (HTTP 오류 403.14-금지-웹 서버가이 디렉토리의 내용을 나열하지 않도록 구성되어 있습니다).

나는 무언가를 놓치고 있다고 생각하지만 무엇을 모른다! System.Web.Mvc, System.Web.Abstraction 및 System.Web.Routing 파일을 동일한 결과로 배포하려고했습니다. F5를 누르고 응용 프로그램을 실행할 때마다 정상적으로 작동합니다!


답변:


224

어쩌면 누군가에게 유용 할 수 있습니다 : .NET framework 4.5를 사용하여 내 응용 프로그램을 MVC 4로 변환하고 IIS 7.0을 사용하여 서버에 프레임 워크를 설치하면 질문에 언급 된 것과 동일한 '금지'오류가 발생했습니다. 나는 위에 설명 된 모든 옵션을 시도했지만 아무 소용이 없었습니다.

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

내 web.config에서 누락되었습니다. 이것을 추가 한 후 모든 것이 작동했습니다. 단순하지만 간과하기 쉬운 ...

편집하다:

물론 위의 해결책은 효과가 있지만 실제로 자원 낭비입니다. Chris Herring이 지적한대로 라우팅 모듈을 추가하는 것이 좋습니다 .

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

2
NuGet 패키지를 제거하면 runAllManagedModulesForAllRequests="true"Web.config에서 패키지가 제거 된 것으로 나타났습니다 . 내가 밤새 이것을 알아 내려고 보내기 전에 이것을 언급 해 주셔서 감사합니다.
Schmalls

3
이!! Arrrrgh 나는 당신의 대답을 찾을 때까지 이것을 작동시키는 데 하루 종일 보냈습니다 / 감사합니다! 이상한 점은 로컬 시스템의 IIS에서 잘 작동하지만 프로덕션 상자에서는 실행되지 않으며 IIS7.5를 실행한다는 것입니다
Glenn Slaven

1
그거였다. Cassette Nuget을 제거하면 가끔 제거됩니다. 감사.
Zachary Scott


6
나는 "어쩌면 누군가에게 도움이 될 것"이라는 대답을 좋아한다.
Paul

126

SO에 답변 여기에 , 질문 : 403 - IIS7.5에 대한 기본 MVC 3 배포에 금지

를 실행하십시오 aspnet_regiis -i. 4.0 개의 앱이 작동하려면 종종 그렇게해야한다는 것을 알게되었습니다. 명령 프롬프트를 다음과 같이여십시오 Administrator(명령 프롬프트 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자로 실행을 선택하십시오).

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

설치 및 등록되면 응용 프로그램이 .NET 4.0으로 설정된 응용 프로그램 풀을 사용하고 있는지 확인하십시오.

업데이트 : 방금이 명령에 문제가 있음을 발견했습니다. -i를 사용하면 모든 응용 프로그램 풀이 ASP.NET 4.0으로 업데이트되었습니다.

를 사용하면 aspnet_regiis -irASP.NET 버전이 설치되지만 웹 응용 프로그램은이 버전으로 변경되지 않습니다. -iru 옵션을 검토 할 수도 있습니다.


나도 일했다. aspnet_regiis -i 명령을 실행 한 후 UrlMappingModule이 IIS에 설치되었습니다.
Manish Gupta

IIS를 설치 한 후에는 .NET 4가 이미 등록 된 것처럼 보이지만 모든 것이 작동하도록 aspnet_regiis를 실행해야했습니다.
브라이언

IIS 이전에 프레임 워크를 설치 한 경우에는 aspnet_regiis를 수행해야합니다.
Brettski

2
64 비트 시스템의 경우 "Framework64"라는 것을 잊지 마십시오. 즉, 윈도우 \ Microsoft.NET \ Framework64 \ v4.xxx.xxx
grahamesd

이를 위해 64 비트 또는 32 비트 버전의 aspnet_regiis는 중요하지 않습니다. 일부 특수한 사례는 다음과 같습니다. msdn.microsoft.com/en-us/library/k6h9cz8h.aspx#Anchor_1
Brettski

34

나도이 오류에 부딪쳤다. 모든 구성과 권한이 정확했습니다. 그러나 Global.asax를 서버에 복사하는 것을 잊었으므로 403 오류가 발생했습니다.


필자의 경우 실수로 마우스를 사용하여 실수로 옮겼습니다. 감사!
Mathias Lykkegaard Lorenzen

웹 문서 폴더를 지운 후에이 파일을 복사하는 것을 간과했기 때문에 2 시간을 낭비했습니다!
Steven Sproat

10

당신 (나)이하고있는 일에 대해 너무 확신하기 때문입니다!

내 컴퓨터에는 IIS 7이 설치되어 있지만 필요한 ASP.NET 구성 요소 (제어판-> 프로그램-> 켜기 / 끄기-> ASP.NET)가 없습니다.

따라서 이것을 설치하면 문제가 해결되었습니다.


9

나는 같은 문제가 있었다. 이 Microsoft 지원 기사에서이 문제를 해결했습니다.
https://support.microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http- 404- 오류-처리 할 때 확장 할 수없는 URL-IIS-7 및 IIS-7.5

Windows 제어판 "프로그램 및 기능"응용 프로그램의 "Windows 기능 설정 또는 해제"대화 상자에서 다음 단계를 수행하십시오.

  1. 인터넷 정보 서비스-> 월드 와이드 웹 서비스-> 공통 HTTP 기능 노드로 이동하십시오.
  2. "HTTP 오류 리디렉션"옵션이 선택되어 있는지 확인하십시오.

-또는-

  1. 인터넷 정보 서비스-> 월드 와이드 웹 서비스-> 성능 기능 노드로 이동하십시오.
  2. "정적 컨텐츠 압축"옵션이 선택되어 있는지 확인하십시오. 옵션을 선택한 후 "확인"을 클릭하여 변경 사항을 저장하십시오.

HTTP 오류 리디렉션 모듈 또는 정적 콘텐츠 압축 모듈을 다시 사용하면 ASP.NET과 IIS가 HTTP 파이프 라인 이벤트를 올바르게 동기화합니다. 이를 통해 URL 라우팅 모듈은 확장없는 URL을 처리 할 수 ​​있습니다.


7

아래에 표시된 다음 설정을 적용하십시오.

1)IIS_IUSRS 사용자 에게 필요한 권한을 부여하십시오 IIS Server(웹 사이트를 마우스 오른쪽 단추로 클릭 한 후 권한 편집> 보안).

여기에 이미지 설명을 입력하십시오

2) 당신이 사용하는 경우 .NET Framework 4, .NET Framework 버전이 있는지 확인 v4.0Application Pool당신의 웹 사이트 사용합니다.

여기에 이미지 설명을 입력하십시오

3) Commanp Prompt as를 열고 명령을 administrator실행 iisreset하여 다시 시작하십시오 IIS Server.

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


팁 :이 후에도 여전히 권한 오류가 발생하면 IIS에서 사이트를 실행하기 위해 cmd에서 Admin으로 iisreset을 수행해야 할 수 있습니다.
Cory Koch

6

내 경우에는 다음과 같은 접근 방식이 도움이되었습니다.

  1. aspnet_regiis -iWindows\Microsoft.Net\Framework

  2. system.webServer에 모듈 추가

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>

프레임 워크를 생략했다고 추측합니다. 그러나 개방 cmd를 관리자로, 및 Windows \ Microsoft.Net \ Framework의 경우 aspnet_regiis -i \ v4.0.30319 실행
DeadlyChambers


3

"출판 동안 프리 D"의 선택을 취소 - 나는 얻고 있었다 403.14 내가 VS2013에서 그것을 재 작성 그래서 난 그냥 VS2015에 쓴 웹 서비스에 오류와 같은 오류가 발생했다. 두 경우 모두 "출판 중 프리 컴파일"을 설정했습니다. 확인하지 않았지만 여전히 오류가 발생했습니다. 제 경우에는 " 게시하기 전에 모든 기존 파일 삭제 "도 있었지만 새로 게시 된 파일을 복사하기 전에 서버의 대상 디렉토리에서 모든 것을 삭제하지 않았습니다. 그렇게하지 않으면 " PrecompiledApp.config "파일이 남겨져 문제가 발생합니다. 해당 파일을 삭제하면 VS2013 및 VS2015 버전의 웹 서비스 모두에서 황금색이었습니다.


2

나는 여기서 모든 것을 시도했다. 아무것도 효과가 없었습니다. 내 Web.config파일에 문제가 있었고 어떻게 든 종속 어셈블리 바인딩이 minimum에서 minimum 1로 변경되었습니다 0.

<!-- was -->
<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />


<!-- should have been -->
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />

1

때때로 잘못하면 Managed pipeline mode이 오류가 발생합니다. 이 선택하는 두 가지 선택이있다 integratedclassic.


1

“HTTP 오류 403.14 – 금지 웹 서버가이 디렉토리의 내용을 나열하지 않도록 구성되었습니다”수정 방법

IIS 7+에서 호스팅되는 MVC 2+를 사용하는 경우이 오류가 발생합니다. 이는 ASP.NET 4가 IIS에 등록되어 있지 않기 때문입니다. 필자의 경우 MVC 3 프로젝트를 만들고 IIS 7.5에서 호스팅했습니다.

이 문제를 해결하려면 MVC 2 이상과 .Net Framework 4.0이 설치되어 있는지 확인한 다음 관리자 권한으로 명령 프롬프트를 실행하고 다음 줄을 입력하십시오.

32 비트 (x86)

% windir % \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -ir

64 비트 (x64)

% windir % \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir



1

최고 답변이 작동하지 않으면 PrecompiledApp.config호스팅 디렉토리에서 이름이 지정된 구성을 찾아서 존재하는 경우 삭제하십시오. 이 파일은 IISExpress 및 LocalIIS가 제대로 작동하지 못하게합니다. (그리고 나는 그것이 버그라고 생각한다) 내 경우의 파일 내용은 다음과 같다.

<precompiledApp version="2" updatable="true"/>

그리고 2 시간 안에 모든 것을 시도 하고이 구성으로 많은 시간을 테스트했기 때문에 100 % 긍정적입니다.

한 가지 더 : aspnet_regiis최신 버전의 Windows 및 IIS에서는 사용할 수 없으므로 시도해보십시오.

dism /online /enable-feature /featurename:IIS-ASPNET45 /all


0

다음과 같은 이유로 제공된 모든 솔루션에도 불구하고 동일한 오류가 발생했습니다.

  • 누락 된 DLL
  • 데이터베이스 연결 문자열이 액세스 할 수없는 서버를 가리 킵니다.

0

필자의 경우 web.config 및 / bin 폴더를 제외한 모든 파일이 누락되었습니다 (어쨌든 복사되지 않음).
바보, 그러나 그것은 내가 확인한 마지막 것이었다.


0

최근에이 오류가 발생하여 Windows 서버에서 "HTTP 리디렉션"기능이 활성화되지 않아서 문제가 발생한 것을 발견했습니다. 이 블로그 게시물 날 (이전 Windows Server 버전을 임에도 불구하고) 답을 찾기 위해 문제 해결을 통해 얻을 도움 : http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable 최신 서버에 대한 -not-working-with-iis.aspx 는 컴퓨터 관리로 이동 한 다음 웹 서버 역할로 스크롤하여 클릭하십시오.add role services


0

C # 4.5의 ASP.NET 프로젝트를 사용 하여 Web Platform Installer에 ASP.NET 확장설치 하여 이러한 문제를 해결했습니다.


0

또한 하나 더 할 수 있습니다

.net framework 4.0 수동 설치

이 솔루션은 창 7의 IIS7 용입니다.

관리 권한이있는 cmd 열기

"C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319"디렉토리로 이동

aspnet_regiis.exe -i 유형

실행 명령 "inetmgr"을 입력하여 inet 관리자에게 도착

IIS7을 새로 고침

사이트를 다시로드하십시오.


0

내부 호스트 에서이 문제가 있음을 알고 있지만 외부 호스트에서 이전에 이러한 문제가 발생했으며 내 경우 자체 해결 방법이 있었기 때문에 누군가의 시간을 절약 할 수 있습니다.

사실 현재 알지 못하는 이유로 인해 내 웹 사이트가 중지되었습니다. 동일한 문제가 있는지 확인하려면 WebsitePanel 기본 페이지에서 웹-> 웹 사이트로 이동 한 다음 목록에서 웹 사이트의 도메인 이름을 선택하십시오 페이지 오른쪽에서 방금 연 다음 STARTED라는 단어가 표시되는지 확인하고, STOPPED라는 단어가 표시되면 다시 시작하십시오. 그게 다야.


0

나는 이것이 오래된 주제라는 것을 알고 있지만 컨트롤러의 경로와 같은 이름의 폴더가있는 경우 (디버깅 할 때)이 오류가 발생할 수도 있습니다.

예를 들어 / User라는 경로의 UserController가 있고 솔루션에 "User"라는 폴더가있는 경우 IISExpress는보기를 표시하는 대신 폴더를 탐색하려고합니다.


0

여기에 제안 된 모든 솔루션을 시도한 후에 또 다른 가능한 솔루션을 찾았습니다 : URLScan

내 응용 프로그램의 web.config에서도 IIS에서 WebDAV가 비활성화되어 WebDAV의 처리기 및 모듈이 제거되었습니다. PUT 은 IIS 로그에 로그 항목없이 403-Forbidden 을 반환했습니다 . (GET / POST가 정상적으로 작동했습니다).

IIS에 모든 PUT을 차단하는 활성 ISAPI 필터 (URLScan)가 활성화되어 있음을 알 수 있습니다. URLScan을 제거한 후 나에게 도움이되었습니다.


0

내 상황은 이것들과 완전히 달랐으며 403 : Forbidden 오류 메시지는 약간의 청어입니다.

Global.asax 모듈의 Application_Start () 함수가 web.config에 액세스하려고 시도하고 참조하는 항목이 없으면 IIS가 질식하여 (어떤 이유로 든) 403 : Forbidden 오류 메시지가 표시됩니다.

Global.asax 모듈에서 액세스하려는 web.config 파일에없는 항목이 없는지 다시 확인하십시오.


0

나와 당신이 NHibernate를 사용하는 응용 프로그램을 가지고 있고 위의 답변으로 문제가 해결되지 않은 경우.

응용 프로그램에서 연결 문자열을 확인해야합니다. 아마도 webconfig 파일에 올바른지 확인하십시오.


-1

Identity Impersonate를 사용하고 있습니다.

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

서버로 푸시 할 때 Temporary ASP.NET파일 폴더에 대한 사용자 이름 액세스 권한을 부여하여 올바르게 읽고 쓸 수 있도록해야합니다.

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

"frameworkversion"및 "aspversion"을 사용중인 버전으로 바꾸십시오.


-1

1 단계 : IIS에서 HTTP 오류가 발생한 사이트를 선택한 다음 아래 이미지와 같이 디렉토리 찾아보기를 클릭하십시오.

2 단계 : IIS의 디렉토리 찾아보기 창에서 아래 다이어그램과 같이 오른쪽의 조치에서 사용을 클릭하십시오.

이제 asp.net 웹 사이트에서 디렉토리 찾아보기를 사용할 수 있습니다. IIS에서 웹 응용 프로그램을 다시 시작하고 브라우저에서 사이트를 찾아보고 결과를 확인하십시오.


-1

사용하고 있습니다 : Win Server 2012 R2 / IIS 8.5 / MVC4 / .Net 4.5

위의 방법 중 아무것도 작동하지 않으면 다음을 시도하십시오.

"게시 중 사전 컴파일"을 선택 취소하십시오.

이것은 며칠 동안 내 엉덩이를 차 버렸다.


@ d-kermott, 내 [find] [( stackoverflow.com/a/31319136/912481 )도 유용 할 수 있습니까?
Kamil Gareev

-1

이 문제가 있었지만 인터넷 정보 서비스 (IIS) 관리자로 이동하여 디렉토리 찾아보기를 두 번 클릭하고 사용을 클릭하여 쉽게 수정했습니다.

필자의 경우 파일에 직접 액세스 할 수 있었지만 폴더에는 액세스 할 수 없었습니다.


-1

IP 주소를 한 자리 숫자로 잘못 입력했기 때문에 다른 서버 중 하나로 이동했습니다. .NET 오류 페이지가 있지만 잘못된 컴퓨터에서 얻는 것이 매우 혼란 스럽습니다!

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