IIS 7.5의 ASP.NET MVC - 오류 403.14 금지
Visual Studio 2010 RC를 사용하여 Windows 7 Ultimate(64비트)를 실행하고 있습니다.저는 최근 VS가 함께 제공되는 개발 서버 대신 IIS에서 앱을 실행/디버깅하기로 결정했습니다.
그러나 MVC 앱을 실행하려고 할 때마다 다음과 같은 오류가 발생합니다.
HTTP 오류 403.14 - 금지됨 웹 서버가 이 디렉터리의 내용을 나열하지 않도록 구성되었습니다.세부적
오류 정보
모듈 디렉토리 목록 모듈
알림 실행 요청 처리기
처리기 정적 파일 오류
요청된 코드 0x00000000
URL http://localhost:80/mySite/
물리적 경로 C:\myProject\mySite\
로그온 방법 익명 로그온
사용자 익명
배치했습니다.default.aspx
디렉토리에 파일이 있는데 다음 오류가 발생했습니다.
HTTP 오류 500.21 - 내부 서버 오류 처리기 "PageHandler Factory-Integrated" 모듈 목록에 잘못된 모듈 "ManagedPipelineHandler"가 있습니다.
이 작업을 수행하기 위해 제가 수행하는 것을 잊었던 다른 단계가 있습니까?
참고: VS 2010 RC를 설치한 후 IIS 7.5를 설치했습니다.Visual Studio 2010에서 MVC 프로젝트의 "Properties"에 있는 "Web" 탭 아래에 있는 내장된 "Create Virtual Directory" 버튼을 사용했습니다.저는 애플리케이션이 ASP를 사용하고 있는지 확인했습니다.NET 4 앱 풀.
아래는 제가 가지고 있는 IIS의 설치된 기능입니다.
ASP.NET 4가 IIS에 등록되지 않았습니다.명령줄/실행에서 다음 명령을 실행해야 함
32비트(x86) Windows
%windir%\마이크로소프트.NET\Framework\v4.0.30319\aspnet_regis.전관의
64비트(x64) Windows
%windir%\마이크로소프트.NET\Framework64\v4.0.30319\aspnet_regis.전관의
David Murdoch의 논평에서 주의:
이 답변이 게시된 이후 .net 버전이 변경되었습니다.%windir%\에 있는 프레임워크 버전을 확인합니다.마이크로소프트.NET\Framework64 디렉토리를 실행하기 전에 명령을 변경합니다(현재 v4.0.30319).
web.config에 다음과 같은 설정이 있는지 확인해야 합니다.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
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, "원문글 읽기")
Global.asax 파일이 루트 폴더에 더 이상 없을 경우 이 오류가 발생할 수 있습니다.
또한 이 오류가 발생하여 Windows Server에서 "HTTP 리디렉션"이 설정되어 있지 않습니다.이 블로그 게시물은 다음과 같이 지적합니다. http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx
http://support.microsoft.com/kb/980368, 에 따르면 시스템에 이 KB를 설치해 보십시오.404s를 보고 있다면 이 업데이트가 없기 때문일 수 있습니다. 그리고 isapi 모듈은 찾을 수 없고 이것 없이는 할 수 있는 일이 많지 않습니다!
AppPool을 통합 모드로 전환할 수도 있습니다.마이클 비안치(https://stackoverflow.com/a/7956546/1143515), )에게 Thnx는 단지 그것을 강조하고 싶을 뿐입니다.
Asp가 있는 Azure Server 2012 R2 IIS 8.5 VM의 경우.NetMVC 5 앱(Bin deployed 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
이제 제 앱이 작동합니다.
MVC 애플리케이션을 새 서버로 이동했습니다.NET 4와 MVC 3가 설치되었지만 여전히 "Error 403.14"가 발생했습니다.이 경우 IIS는 MVC 응용 프로그램을 처리하는 것을 이해하지 못하고 기본 페이지를 찾고 있음을 의미합니다.
해결 방법은 간단했습니다. HTTP 리디렉션이 서버에 설치되지 않았습니다.
서버 관리자 – 역할 – 웹 서버(IIS) – 역할 서비스 – HTTP 리디렉션:설치되지 않았습니다.설치하면 문제가 해결됩니다.
또한 당신의 앱이 미리 컴파일되어 있다면 당신은 가지고 있어야 합니다.
PrecompiledApp.config
당신의 앱의 루트 폴더에서 그렇지 않으면 당신은 얻을 수 있습니다.HTTP Error 403.14
뿐만 아니라.
global.asax 주변으로 이동하는 경우에는 마크업이 올바른 MvcApplication 클래스를 가리키는지 확인하십시오.바라건대 이것이 미래에 누군가를 구할 수 있기를 바랍니다.
WebDeploy IIS Extension을 사용하여 웹 사이트를 IIS6에서 IIS 7.5로 가져왔으므로 모든 IIS 설정은 운영 환경과 동일합니다.여기에 제공된 모든 솔루션을 사용해 본 결과, 어떤 솔루션도 제대로 작동하지 않았기 때문에 웹 사이트의 앱 풀 설정을 클래식에서 통합으로 변경하기만 했습니다.
저는 갑자기 같은 404.14 문제를 만났습니다.마지막으로 게시 프로필 설정에서 "게시 중 사전 컴파일"을 선택 취소하여 문제를 해결했습니다.
어느 시점에서 기본 경로를 변경했습니다.
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" }
그래서 당신의 실수가 있었습니다.누군가 라우팅에 대해 언급해서 다행입니다. 아마도 저는 영원히 이것에 있었을 것이기 때문입니다.
저 같은 경우에는 ASP.서버에 NET 4.5가 설치되어 있지 않으므로 ASP를 설치합니다.NET 4.5는 이 문제를 해결했습니다.
를 cmd보다 하여 이 할 수 .
Windows 32비트의 경우 사진과 동일하게 수행합니다.
. 로 이동하여를 새로 .
하면 응용 풀에서 하십시오.
저는 이 문제로 이어진 또 다른 문제가 있었습니다.
- 앱 풀이 .net 4를 통합 모드로 실행하고 있는지 확인했습니다.
- 저는 aspnet_regis를 실행했습니다.exe-i
- 앱 풀을 실행하는 계정에 대해 폴더 권한이 올바르게 설정되어 있는지 확인했습니다.
이것들 중 아무 것도 작동하지 않았습니다.시스템 아래의 web.config에서 확인되었습니다.webserver > modules 나는 다음을 가지고 있었습니다.
<remove name="WindowsAuthentication" />
분명히 이것은 윈도우 인증 모듈을 제거했는데, 이것은 어떻게든 모든 것을 죽이는 것처럼 보였습니다.
저는 이것이 누군가에게 도움이 되기를 바랍니다, 왜냐하면 이것은 저에게 저녁의 대부분을 희생시켰기 때문입니다!
최신 버전의 Windows Server에서는 UI가 약간 다릅니다.여기서 ASP를 활성화해야 합니다.IIS에서 작동하기 위한 네트
이 문제에 대한 다른 솔루션을 추가하는 중입니다.
제 Global.asax.cs 파일에서 다음을 사용하여 MVC 파이프라인에서 시도된 php 파일이 사용되지 않도록 설정했습니다.
routes.IgnoreRoute( "{*php}" );
저는 이전에 MVC2 프로젝트에서 이 작업을 수행한 적이 있으며 정상적으로 작동했지만 MVC3 앱에서 이 작업을 수행한 결과 위에 보고된 문제가 발생했습니다.
일어날 수 또 는 - 당신의 하만이일일수어날있또는이다유른는의이런당신 - 지의신▁yet▁your▁this.RouteConfig.cs
또는WebApiConfig.cs
무효입니다.
나의 경우, 나는 다음과 같이 정의된 경로를 가지고 있었습니다(컬리 브레이스 대신 괄호를 참고하십시오).
...
routeTemplate: "api/(something}"
...
Windows 8 사용자의 경우 IIS에 등록하려면 Windows 구성 요소를 추가/제거하고 .net 재부팅 버전을 제거한 후 다시 설치해야 합니다.visual studio에서 .net 4.5를 얻고 나중에 IIS를 설치하면 이런 일이 발생할 것입니다.
이상하게 보일 수도 있지만, IIS를 다시 설치하는 것이 저에게 효과적인 방법이었으며, .net 버전 폴더 안에서 다음 명령을 실행했습니다.
aspnet_regiis.exe /i
이 명령을 처음 실행할 때 HTTP 오류 403.14가 발생하기 시작했습니다.하지만 명령을 다시 실행하면 문제가 해결됩니다.
Obs: IIS를 다시 설치하기 전에 서버 관리 화면의 서버 기능에서 HTTP Redirect를 제거하는 작업도 수행했습니다.이것도 문제를 해결하는 데 영향을 미쳤을 수도 있지만 잘 모르겠습니다.따라서 IIS를 다시 설치해도 작동하지 않는 경우 HTTP Redirect를 제거한 후 다시 시도하십시오.당신에게도 효과가 있기를 바랍니다.
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
이것은 저에게 효과가 있었고 다른 사람에게 유용할 수도 있습니다.
필요한 모든 구성 요소가 없거나 일부 구성 요소가 올바르게 등록되지 않았을 수 있습니다.이를 해결하기 위해서는 제어판 -> Windows 기능 켜기/끄기 -> 인터넷 정보 서비스 -> World Wide Web Services -> Application Development Features 내의 모든 옵션을 선택 취소하고 모든 옵션을 선택 취소한 후 IIS를 재설정하여 문제가 해결되었는지 확인하십시오.
윈도우즈 8 또는 서버 2012에서 IIS 8.5를 실행하는 경우 mvc 4/5(.net 4.5)를 실행하는 것이 가상 디렉터리에서 작동하지 않을 수 있습니다.호스트 파일에 로컬 호스트 항목을 만들어 로컬 컴퓨터를 가리킨 다음 새 로컬 IIS 웹 사이트를 해당 폴더(일치하는 호스트 헤더 항목 포함)로 가리키면 작동합니다.
컨트롤러에 대한 경로와 동일한 새 네임스페이스(폴더)를 만들었습니다(예:MvcApp/Test/SomeClasses.cs
그리고.MvcApp/Controllers/TestController.cs
이는 또한 403.14를 기록했습니다!
저에게 해결책은 Microsoft의 NuGet 패키지를 추가하는 것이었습니다.웹 프로젝트에 AsNet.WebPages(및 레이저 및 인프라 종속성)를 추가합니다.
처음에는 인프라가 참조로 추가되지 않았기 때문에 인프라를 강제로 다시 설치해야 했습니다.
저 같은 경우에는.응용 프로그램 풀 속성 타이어의 NET CRL 버전이 관리되는 코드 없음으로 설정되었습니다(이유를 알 수 없음).으로 설정합니다.NET CRL 버전 v4.0.30319로 문제가 해결되었습니다.
언급URL : https://stackoverflow.com/questions/2374957/asp-net-mvc-on-iis-7-5-error-403-14-forbidden
'source' 카테고리의 다른 글
MongoDB: 끔찍한 맵성능 저하 (0) | 2023.05.01 |
---|---|
WPF 콤보 상자 디스플레이 구성원 경로 (0) | 2023.05.01 |
Visual Studio Code에서 실행 중인 Angular 응용 프로그램에서 TSLint 확장자 쓰기 오류 발생 (0) | 2023.04.26 |
Windows GUI: WPF 또는 WinRT(2015+) (0) | 2023.04.26 |
SQL Server 2008 데이터베이스를 오프라인으로 설정하는 방법 (0) | 2023.04.26 |