IIS 7.5의 ASP.NET MVC


338

Visual Studio 2010 RC를 사용하여 Windows 7 Ultimate (64 비트)를 실행하고 있습니다. 최근에 VS와 함께 제공되는 dev 서버 대신 IIS에서 내 앱을 실행 / 디버깅하도록 결정했습니다.

그러나 MVC 앱을 실행할 때마다 다음 오류가 발생합니다.

HTTP 오류 403.14-금지 웹 서버가이 디렉토리의 내용을 나열하지 않도록 구성되었습니다. 상세한

에러 정보

모듈 디렉토리 목록 모듈

알림 ExecuteRequestHandler

처리기 StaticFile 오류

코드 0x00000000 요청

URL http : // localhost : 80 / mySite /

실제 경로 C : \ myProject \ mySite \

로그온 방법 익명 로그온

사용자 익명

내가 배치 default.aspx디렉토리에 파일을 나는 다음과 같은 오류가 발생했습니다 :

HTTP 오류 500.21-내부 서버 오류 처리기 "PageHandlerFactory-Integrated"의 모듈 목록에 잘못된 모듈 "ManagedPipelineHandler"가 있습니다.

이 작업을 수행하기 위해 잊어 버린 다른 단계가 있습니까?

참고 : VS 2010 RC를 설치 한 후 IIS 7.5를 설치했습니다. Visual Studio 2010에서 MVC 프로젝트의 "속성"에있는 "웹"탭 아래에 내장 된 "가상 디렉터리 만들기"단추를 사용했습니다. 응용 프로그램이 ASP.NET 4 응용 프로그램 풀을 사용하고 있는지 확인했습니다.

다음은 IIS의 설치된 기능입니다.

대체 텍스트


좋아, 비슷한 문제가 있으며 ASP.NET MVC 3 웹 사이트에만 나타납니다. ASP.NET MVC 2 웹 사이트는 정상적으로 작동합니다. 웹 사이트의 루트에 Default.aspx 파일을 배치했는데 문제가 없습니다. VS2010 SP1을 사용하여 ASP.NET MVC 3 웹 사이트를 bin 배포했지만 여전히 기뻐하지 않았습니다. 나는 이것으로 끝났다.
Umar Farooq Khawaja

5
이 같은 문제가 있습니다. 4.0 통합을 사용하도록 응용 프로그램을 설정하고 IIS (7.5)에 .NET을 등록하기 위해 등록 명령을 실행했지만 여전히이 오류가 발생합니다.
Collin White

2
나는 마침내 내가 파일 이름을 변경했다고했다 나의 셋업에서 문제를 발견 할 수있었습니다 _Layout.cshtml을을 _PageLayout.cshtml하고있는 해당 변경 만들었다 _ViewStart.cshtml충분히되지 않았 음을 분명히뿐만 아니라,하지만합니다. 이름을로 되 돌리면 _Layout.cshtml작동하기 시작했습니다. 혼란스러운 것은 _PageLayout.cshtmlWin7 32 비트에서 올바르게 선택되었지만 Win7 64 비트 또는 WinSvr2K8 R2에서 선택되지 않았다는 것입니다.
우마르 파 루크 카와 자

3
IIS 8이 설치된 Windows 8에서 이에 대한 해결책을 찾은 사람이 있습니까?
Eric Z Beard

3
Windows Server 2012 또는 Windows 8을 사용하는 경우 다음을 참조하십시오. [ stackoverflow.com/questions/12134713/… [1] : stackoverflow.com/questions/12134713/…
Lomak

답변:


499

ASP.NET 4는 IIS에 등록되지 않았습니다. 커맨드 라인 / 실행에서 다음 명령을 실행해야했습니다.

32 비트 (x86) Windows

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

64 비트 (x64) Windows

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

David Murdoch의 의견에서 참고하십시오.

이 답변이 게시 된 이후 .net 버전이 변경되었습니다. % windir % \ Microsoft.NET \ Framework64 디렉토리에있는 프레임 워크 버전을 확인하고 실행하기 전에 명령을 적절히 변경하십시오 (현재 v4.0.30319 임).


9
64 비트 Windows 용 Framework64의 "64"에 유의하십시오 ! 그게 나를 * ss에 물었다. 32 비트 버전을 아무 효과없이 4 또는 5 번 설치해야합니다.
벤 레쉬

14
이 답변이 게시 된 이후 .net 버전이 변경되었습니다. 디렉토리 에있는 프레임 워크의 버전을 확인 %windir%\Microsoft.NET\Framework64하고 실행하기 전에 명령을 적절히 변경하십시오 (현재 v4.0.30319 임).
David Murdoch

1
64 비트가 있고 32 비트 aspnet_regiis.exe를 실행하면 @blesh에 추가하기 위해 옵션을 다시 표시하고 아무것도 할 수 없습니다
xster

3
aspnet_regiis.exe 명령이 .net 프레임 워크 폴더에서 누락 된 경우 전체 .net 프레임 워크 설치 프로그램 microsoft.com/download/en/…을
warrickh

11
"이 옵션은이 버전의 운영 체제에서 지원되지 않습니다. 관리자는 대신"Windows 기능 켜기 / 끄기 "를 사용하여 IIS8과 함께 ASP.NET 4.5를 설치 / 제거해야합니다. 대화 상자, 서버 관리자 관리 도구 또는 dism.exe 명령 줄 도구를 참조하십시오. 자세한 내용은 go.microsoft.com/fwlink/?LinkID=216771을 참조하십시오 . "
Mastro

199

web.config에 다음 사항이 있습니다.

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

23
그것은 나를 위해 그것을했다. 감사합니다
boca

5
또한 나를 위해 해결했습니다. 해당 설정없이 VS2010 IIS Express에서 로컬로 작동합니다.
Phil

8
runAllManagedModulesForAllRequests정적 파일에서도 실행 되도록 설정하지 않으려면 microsoft.com/download/en/… Microsoft 핫픽스를 설치할 수 있습니다 .
저스틴 Helgerson

10
라우팅 모듈을 추가하여이를 피하십시오 : britishdeveloper.co.uk/2010/06/…
Chris Herring

VS2013을 사용 중이고 IIS 7.5에서 실행하려는 경우이를 추가해야합니다.
KenL

77

web.config에 다음이 설정되어 있는지 확인하십시오.

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

더 나은 솔루션 :

위의 솔루션은 절대적으로 잘 작동하지만 모든 요청 (.jpg .gif .css .html .pdf 등의 모든 요청에서도)에 등록 된 모든 HTTP 모듈을 실행하고 분명히 리소스를 낭비하므로 다른 문제가 발생할 수 있습니다. 대신에

<system.webServer>
<modules>
  <remove name="UrlRoutingModule-4.0"/>
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="" />
</modules>
</system.webServer>

preCondition 속성이 비어 있는지 확인하면 모든 요청에서 실행됩니다. [더 읽기] ( http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html , "원본 게시물 읽기")


6
이것은 루트에서 403.14를 수정했고 내 MVC 앱의 다른 컨트롤러 메소드에서 404를 수정했습니다. 그러나 동일한 보이는 사이트 설정으로 동일한 서버에서 다른 앱을 실행하고 있으며이 설정없이 작동하기 때문에 여전히 비린내가 있습니다. 이것은 VS 2012의 SPA 프로젝트 템플릿으로 작성된 web.config이며 내 상자에서는 잘 작동하지만 게시 할 때는 작동하지 않습니다.
shannon

4
내 개발 장치가 포함되어 있으므로 예 <system.web><httpModules><add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />,에 Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config와 보았다는 내 VS 2012 설치 일에 수정 된합니다. 다음 질문은 다른 프로젝트에서 그것이 작동하게하는 것이 무엇입니까?
shannon

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir내 개발 장치에 존재해야 할 기본값을 설정하는 최고의 솔루션 은 권장 하지 않습니다 . UrlRoutingModule 참조를 제거한 후에는이 명령으로 문제가 해결되지 않습니다.
shannon

ASP.NET MVC 5 용 Windows Server 2008 R2 IIS 7에서 작동합니다. 감사합니다!
Ervi B

42

누군가 Global.asax 파일 이 더 이상 루트 폴더에없는 경우이 오류가 발생할 수 있습니다 .


4
네-필자가 작성한 설치 프로그램 이이 파일을 가져 오지 못했습니다. 감사!
zadam

4
이것은 나의 문제이기도했다. 나는 내 응용 프로그램은 Global.asax에 누락되었다는 (403) 증상에 따라 추측 못했네
사울 Dolgin

3
게시 옵션에서 사전 컴파일을 해제했습니다 ( global.asax파일에만 영향을 미침).
Richard

1
이것은 나를 위해 속였다. 문제는 저를 위해 다른 많은 사람들에게 global.asax가 게시 할 때마다 생성된다는 것입니다. 아무도 매번 그것을 생성하는 방법을 알아 냈습니까?
Greg Z.

고마워, 내 문제를 해결했다. 응용 프로그램은 ASP.NET MVC 4.0, Framework 4.0에서 실행됩니다. Arvixe에서 호스팅합니다.
Joe King

20

또한이 오류가 발생하여 Windows 서버에서 "HTTP 리디렉션"이 설정되지 않았 음을 발견했습니다. 이 블로그 게시물은 이것을 지적합니다 : http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx


6
그럴 수 있었던 모든 것 중에서 이것이 바로 그 것입니다. 나는 어디에서나 보았고 몇 시간 동안, aspnet_regiis 등으로 보안 설정을 가지고 놀았습니다. 부서지기 쉬운 카이저 롤에 달콤한 아기 예수.
Andrew Backer

나는 이것을 위해 하루 종일 보냈다. 정말 고맙습니다.
Pradeep

Windows 8의 경우 HTTP 리디렉션을 활성화 한 후에도 여전히 오류가 발생했습니다. 인터넷 정보 서비스-> 월드 와이드 웹 서비스-> 응용 프로그램 개발 기능 serverfault.com/questions/514091/…
dreamerkumar

두 번째 정류장은 내 문제를 해결했습니다. 일부 기계는 그것없이 작동하지만 다른 기계는 필수적입니다. 감사.
Alexis Heijmeijer

15

사랑스런 예수님. 위의 모든 것을 시도했지만 설정이 동일하다는 것을 알았습니다. 문제가있는 경우 다른 해결책을 찾으십시오.

http://support.microsoft.com/kb/980368

시스템에이 KB를 설치하십시오. 404가 표시되면이 업데이트가 없기 때문일 수 있습니다. isapi 모듈을 찾을 수없고 이것 없이는 할 수있는 일이 많지 않습니다!


1
Server 2008 SP2 (R2 아님)를 실행하는 32 비트 서버에서 해결
Simon C


7

Asp.Net MVC 5 앱이 포함 된 Azure Server 2012 R2 IIS 8.5 VM (bin 배포 MVC 5)의 경우 4.5가 이미 설치되어 있어도 승격 된 cmd 프롬프트에서 다음을 수행해야했습니다.

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

출처 : http://support.microsoft.com/kb/2736284

또한 다음 PowerShell을 사용하여 모든 IIS 기능을 강제 설치했습니다.

import-module servermanager
add-windowsfeature web-server -includeallsubfeature

출처 : http://www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2

이제 내 앱이 작동 중입니다.


'dism'하나는 나를 위해 일했습니다 (다른 제안 된 변경 사항을 적용하지 않고). 모든 '부모'기능도 설치되도록 '/ all'스위치를 끝까지 전환해야했습니다.
Jeroen Ritmeijer 2016 년

이것은 나를 위해 일했습니다. Windows Server 2012에서 .NET 4.5와 함께 MVC 5를 실행합니다. IIS는 기본적으로 .NET 4.5를 설치하지 않습니다.
DPac

6

MVC 응용 프로그램을 새 서버로 옮겼습니다. .NET 4 및 MVC 3이 설치되었지만“403.14 오류”가 계속 발생합니다. 이 경우 IIS가 MVC 응용 프로그램을 처리하고 있음을 이해하지 못하고 기본 페이지를 찾고 있음을 의미했습니다.

해결책은 간단했습니다. 서버에 HTTP 리디렉션이 설치되지 않았습니다.

서버 관리자 – 역할 – 웹 서버 (IIS) – 역할 서비스 – HTTP 리디렉션 : 설치되지 않았습니다. 설치하고 문제가 해결되었습니다.


1
서버 관리자 란 무엇입니까? 어디서 찾을 수 있습니까?
Elad Katz

서버 관리자는 관리 도구
udog

5

또한 앱이 사전 컴파일 된 경우

PrecompiledApp.config

그렇지 않으면 앱의 루트 폴더에 있습니다 HTTP Error 403.14.


내 앱이 사전 컴파일되지 않았어도 어떤 이유로 파일이 있습니다. 파일을 삭제하고 지금 작동합니다. 감사합니다!
vaindil

2 시간을 소비하고 스스로 해결하기 전에이 답변을 본다면 정말 기쁠 것입니다 ..
sotn

4

global.asax를 이동하는 경우 다른 가능한 솔루션으로 마크 업이 올바른 MvcApplication 클래스를 가리키는 지 확인하십시오. 희망적으로 이것은 미래에 누군가를 구할 것입니다.


4

WebDeploy IIS 확장을 사용하여 웹 사이트를 IIS6에서 IIS7.5로 가져 왔으므로 모든 IIS 설정은 프로덕션 환경에서와 동일합니다. 여기에 제공된 모든 솔루션을 시도한 후에도 아무것도 효과가 없었지만 웹 사이트의 앱 풀 설정을 클래식에서 통합으로 변경하기 만하면되었습니다.


4

나는 갑자기 같은 404.14 문제를 만났다. 마지막으로 공개 프로파일 설정에서 "게시하는 동안 사전 컴파일"을 선택 취소하여 문제점을 수정했습니다.


여기도 마찬가지입니다. 오늘까지 출판은 문제가되지 않았다. 체크를 풀면 해결되었다. 어쨌든 이상한
루포 선생님

4

한 지점에서 기본 경로를 다음과 같이 변경했습니다.

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }

에:

routes.MapRoute(
"Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index" }

어느 것이 당신의 오류를 줬습니다. 내가 영원히 이것에 있었을 것이기 때문에 누군가가 라우팅을 언급하게 된 것을 기쁘게 생각합니다.


4

필자의 경우 ASP.NET 4.5가 서버에 설치되어 있지 않으므로 ASP.NET 4.5를 설치하면 문제가 해결되었습니다.


4

cmd를 admin으로 실행하여이 오류를 해결할 수 있습니다. 여기에 이미지 설명을 입력하십시오

Windows 32 비트의 경우 그림과 동일하게 수행하십시오.

iis로 이동하여 사이트를 새로 고치는 것보다
여전히 오류가 발생하는 경우 응용 프로그램 풀에서 변경하십시오.


3

이 문제를 일으키는 또 다른 문제가있었습니다.

  • 내 앱 풀이 통합 모드에서 .net 4를 실행하고 있는지 확인했습니다.
  • aspnet_regiis.exe -i를 실행했습니다.
  • 앱 풀을 실행하는 계정에 대해 폴더 권한이 올바르게 설정되었는지 확인했습니다

이 중 어느 것도 효과가 없었습니다. 내 web.config에서 system.webserver> 모듈 아래에 다음이 있음이 밝혀졌습니다.

<remove name="WindowsAuthentication" />

분명히 이것은 Windows 인증 모듈을 제거하여 어떻게 든 모든 것을 깨뜨릴 수있는 것처럼 보였습니다.

나는 이것이 대부분의 저녁 비용 때문에 누군가에게 도움이되기를 바랍니다!


3

최신 버전의 Windows Server에서는 UI가 약간 다릅니다. IIS에서 작동하게하려면 ASP.Net을 활성화해야합니다.

IIS 및 Asp.net 수정


2

이 문제에 대한 다른 솔루션 추가

내 Global.asax.cs 파일에서 다음을 사용하여 MVC 파이프 라인에서 PHP 파일을 사용하지 못하게했습니다.

routes.IgnoreRoute( "{*php}" );

이전에 MVC2 프로젝트 에서이 작업을 수행했지만 정상적으로 작동했지만 MVC 3 앱 에서이 작업을 수행하면 위의 문제가 발생했습니다.


2

또 다른 이유는 이것이 일어날 수 있습니다-당신의 RouteConfig.cs또는 WebApiConfig.cs유효하지 않습니다.

필자의 경우 경로를 이와 같이 정의했습니다 (중괄호 대신 괄호에 유의하십시오).

...
routeTemplate: "api/(something}"
...

그것은 나를 위해 작동합니다! 내가 변경 한 경우 routes.MapRoute( name:"Default", url:"{controller}/{action}/{repositoryId}", defaults:new { controller = "Account", action = "Login", id = UrlParameter.Optional } );. 나는 고정하는 경우 id = UrlParameter.OptionalrepositoryId = UrlParameter.Optional그 작업을 시작합니다!
Dmitresky

2

Windows 8 사용자의 경우 Windows 구성 요소를 추가 / 제거하고 .net 재부팅 버전을 제거한 다음 다시 설치하여 IIS에 등록해야합니다. Visual Studio에서 .net 4.5를 가져 와서 IIS를 설치하면이 문제가 발생한다고 가정합니다.


2

이상하게 보일 수도 있지만 IIS다시 설치 하면 .net 버전 폴더 내에서 다음 명령을 실행하여 저에게 효과적 이었습니다.

aspnet_regiis.exe /i

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

이 명령을 처음 실행할 때 HTTP 오류 403.14가 발생하기 시작했습니다. 그러나 일단 명령을 다시 실행하면 문제가 해결되었습니다.

Obs : 내가 한 또 다른 일은 IIS를 다시 설치하기 전에 서버 관리 화면의 서버 기능에서 HTTP 리디렉션을 제거하는 것이 었습니다. 어쩌면 이것이 문제 해결에 영향을 미쳤을 수도 있지만 확실하지 않습니다. 따라서 IIS를 다시 설치해도 여전히 작동하지 않으면 HTTP 리디렉션을 제거하고 다시 시도하십시오. 잘하면 그것은 당신에게도 효과가있을 수 있습니다.


참고로 aspnet_regiis.exeIIS를 설치하거나 다시 설치하지 않고 특정 .NET 프레임 워크 버전 만 등록하므로 IIS가 응용 프로그램을 호스팅하는 데 사용할 수 있습니다.
stephen

1

32 비트 모드를 사용하지 않고이 문제를 해결하려면이 프로젝트의 소스 코드를 업데이트해야합니다.

public static void RegisterUrlRoutesFromAttributes(RouteCollection routes)
{
    // Enumerate assembly for UrlRoute attributes.
    List<MapRouteParams> routeParams = new List<MapRouteParams>();
    AppDomain.CurrentDomain.GetAssemblies()
        .ToList()
        .ForEach(assembly => routeParams.AddRange(GetRouteParamsFromAttributes(assembly)));

IT 클라우드 코드 플렉스 프로젝트의 토론 게시판에 대한 토론으로이 문제를 제기했습니다.

http://itcloud.codeplex.com/discussions/262000


1

이것은 나를 위해 일했고 다른 사람에게 유용 할 수 있습니다.

필요한 모든 구성 요소가 없거나 모두 올바르게 등록되지 않았을 수 있습니다. 이 문제를 해결하려면 제어판-> Windows 기능 설정 또는 해제-> 인터넷 정보 서비스-> 월드 와이드 웹 서비스-> 응용 프로그램 개발 기능 내의 모든 옵션을 선택 취소하고 모든 옵션을 선택 취소하고 모두 다시 확인한 다음 IIS를 재설정하십시오. 문제가 해결되었는지 확인하십시오.

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


1

Windows 8 또는 Server 2012에서 IIS 8.5를 실행하는 경우 가상 디렉터리에서 mvc 4/5 (.net 4.5) 실행이 작동하지 않을 수 있습니다. 호스트 파일에 로컬 호스트 항목을 만들어 로컬 컴퓨터를 다시 가리킨 다음 일치하는 호스트 헤더 항목이있는 해당 폴더를 새 로컬 IIS 웹 사이트로 지정하면 제대로 작동하는 것을 알 수 있습니다.


0

컨트롤러에 대한 경로 (예 : MvcApp/Test/SomeClasses.csMvcApp/Controllers/TestController.cs) 와 동일한 새 네임 스페이스 (및 폴더)를 만들었습니다 . 이로 인해 403.14도 발생했습니다!


0

나를 위해 해결책은 NuGet 패키지 Microsoft.AspNet.WebPages (및 Razor 및 Infrastructure 종속성)를 웹 프로젝트에 추가하는 것이 었습니다.

인프라는 처음에 참조로 추가되지 않았으므로 강제로 다시 설치해야했습니다.


0

필자의 경우 응용 프로그램 풀 prppertires의 .NET CRL 버전이 관리 코드 없음으로 설정되었습니다 (이유를 모릅니다). .NET CRL 버전 v4.0.30319로 설정하면 문제가 해결되었습니다.

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