MVC4 HTTP 오류 403.14-금지됨


88

로컬에서 제대로 작동하는 .net4.5 ASP.NET MVC4 웹 앱 (IIS Express 및 개발 서버)을 빌드했지만 웹 서버에 배포하면 403 오류가 발생합니다. 나는 서버에 .Net 4.5RC를 설치했고 aspnet_regiis -i 모든 사람들이 이전 버전의 MVC / .Net에 대한 문제에 대해 권장 하는 비트를 시도했지만 도움이되지 않았습니다.

어떤 아이디어?

편집 : 상황에 대한 추가 정보. 서버는 32 비트이고 잘 작동하는 다른 4 개의 MVC3 응용 프로그램이 있습니다. 작동하지 않는 것은 MVC4 앱뿐입니다.


새 asp.net 4.5 Web Forms 앱을 만들 때 이와 동일한 문제가 발생했습니다 . 로컬에서 (IIS 7.5) 제대로 작동했지만 테스트 서버 (IIS 7.5)에 배포하면 대부분의 번들 및 축소 된 javascript 및 css 파일이 404 Not Found로로드되지 않았습니다. runAllManagedModulesForAllRequests에 대한 아래 답변으로 문제가 해결되었습니다!
ClearCloud8

: I은이 질문에 대답했을 수 stackoverflow.com/questions/24343788/...을
fsbf

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

답변:


172

시험

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

통하다

/server/405395/unable-to-get-anything-except-403-from-a-net-4-5-website


1
그것이 제자리에 있었다면 모든 것을했고 여전히 MVC 4 사이트 만 작동합니다. 이것이 작동하려면 다른 트릭이 있어야합니다.
Maxim V. Pavlov

1
이. 기쁨없이 다른 모든 재고 솔루션을 시도했지만 이것이 문제를 분류 한 것입니다.
Julia Hayward 2013 년

1
친애하는 친구, 나는 그것을하지만 작동하지 않습니다. 실제로 저는 MVC 4 및 VisualStudio 2012로 작업하고 있었는데, 프로젝트는 어제까지 잘 작동했지만, 일반적인 코드 변경 후 기본 페이지 (홈 / 인덱스)에서이 오류가 발생합니다. 할 수있는 신체 도움이 나를 제발 ..?
A.Dara

4
이 수정은 이 문제에 적합하지 않습니다 (Jason Koopmans 답변의 링크 참조). 훨씬 더 여기에 관련 핫픽스를 다운로드하고 microsoft.com/en-us/download/...
아마드 이브라힘

@AhmadIbrahim 실제로 문제에 대한 해결책입니다. 수정 사항은 64 비트 전용이며 질문에는 32 비트가 명시되어 있습니다. RAMMFAR가 가장 안정적인 작업 솔루션 인 특정 구성이 있으며 CDN이 적절하게 사용되는 경우 최소한의 서버로드를 추가합니다.
MarkKGreenway 2014

22

오류 403.14는 디렉토리의 내용을 나열 할 수없는 HTTP 오류 코드입니다. 확인하십시오

  1. IIS에서 웹 사이트를 응용 프로그램으로 설정했습니다.
  2. 서버에 .NET 4.5가 설치되어 있습니다.
  3. .NET 프레임 워크의 적절한 버전을 실행하도록 응용 프로그램 풀을 설정했습니다 (예 : .NET 2.0으로 설정되지 않음).
  4. 애플리케이션 풀에서 통합 파이프 라인을 사용하고 있습니다.
  5. .NET 4.5는 실제로 IIS에 등록되어 있습니다. 유사한 문제 / 해결 방법 은 이 게시물 을 참조하십시오.

일반적으로 a와 d는 IIS에 대한 MVC 배포와 관련된 가장 큰 문제입니다.


1. 웹 사이트를 애플리케이션으로 설정하지 않았습니다. 2. .net 4.5가 설치되어 있고 3. 올바른 프레임 워크를 대상으로하는 앱 풀이 있습니다. 4. 내 풀이 클래식을 사용하도록 설정되어 통합으로 변경되었지만 도움이되지 않았습니다. 5. 4.5가 등록되어 있다고 확신합니다.
mithun_daa

1
@mithun_daa-웹 사이트를 응용 프로그램으로 설정하지 않은 경우 매우 간단합니다.-> 가상 디렉터리 / 웹 사이트를 마우스 오른쪽 단추로 클릭하고 응용 프로그램으로 변환 (또는 응용 프로그램을 추가하면 지금은 용어가 빠져 나옵니다)
Tommy

이것은 MVC4 특정입니까? MVC3 프로젝트를 응용 프로그램으로 설정 한 적이 없으며 제대로 작동합니다.
mithun_daa

그런 다음-> 배포하는 방법이 될 수 있지만 모든 .NET 웹 응용 프로그램은 IIS에서 응용 프로그램으로 설정되어야합니다. 그러나 기본 웹 사이트 아래에두면 기본 웹 사이트 응용 프로그램에서 실행됩니다. 기본 웹 사이트의 응용 프로그램 풀이 올바르게 구성되었는지 확인합니다 (.NET 4 / 통합). IIS에서 가상 디렉터리 / 가상 웹 사이트를 만들 때 자체 응용 프로그램으로 설정하는 옵션도 있습니다.
Tommy

혼란 스러울 수 있지만 기본 웹 사이트 아래에 사이트가 없습니다. IIS7에서 "사이트"를 마우스 오른쪽 버튼으로 클릭하고 "웹 사이트 추가"를 선택합니다. 그게 제가 해왔 던 방식입니다.
mithun_daa jul.

11

아마도 ... 게시 마법사를 사용하고 (저와 마찬가지로) "게시 중 미리 컴파일"확인란을 선택하고 (저와 마찬가지로) 동일한 증상이 나타나는 경우 ...

예, 저는 머리를 쓰다듬었지만이 상자를 선택 취소하면 관련없는 설정 인 것처럼 보이며 설명 된 모든 증상은 재배치 후에 사라집니다.

바라건대 이것은 일부 사람들을 수정합니다.


이 경우 가능한 근본 원인은 프로덕션 환경에 다른 버전의 외부 라이브러리가있는 것입니다. 내 mvc 앱을 타사 dll의 최신 버전과 프로덕션 서버의 이전 버전에 대해 컴파일했습니다.
ValGe

여기 소년 경이, 아이, 기적의 남자, 현상, 멈출 수없는, 왕, 여기에 @Brian Kirkpatrick 신사 숙녀 여러분
Luis Villarroel

10

Windows-> 시작-> widows 기능 켜기 및 끄기

필수 옵션을 확인하십시오.

여기에 이미지 설명 입력


6

신청하기 전에

runAllManagedModulesForAllRequests="true"/>

덜 과감한 대안을 제안하는 아래 링크를 고려하십시오. 게시물에서 저자는 로컬 web.config에 다음과 같은 변경 사항을 제공합니다.

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

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html


이것이 진정한 답입니다. 감사!
Spivonious

5

내 RouteConfig.cs에있는 url 매개 변수 의 리터럴 문자열내에서 "id"의 이름을 잘못 변경 한 Visual Studio 2012 의 Refactor-> Rename Bug 가 있습니다. 이로 인해 Windows Server 2012 및 Windows Server 2008 R2 모두에서 새 설정 및 그렇지 않으면 올바른 설정에서 403.14가 발생했습니다.

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

변경되었습니다

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{renamed_text}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

나를 위해, 내가 오래 전에 내가 입력 할 수 있다는 것을 발견 null에 대한 name매개 변수는 모든 경로의 이름을 구성하는 피하기 위해. 이로 인해 때때로 403이 발생하는 것으로 나타났습니다 (프로덕션 환경에서만 VS2013 프로젝트에서 .NET 4.5.1, MVC 5를 실행하는 Win Server 2008 R2. 해결하기 위해 각 경로에 대한 이름을 추가했습니다.
tristankoffee

2

dev 서버로 테스트 할 때 통합 파이프 라인을 사용하고 라이브 IIS 7.5 웹 서버에 클래식 파이프 라인 모드로 설치하는 경우 403을 얻을 수도 있습니다. 또한 필요한 app_data 폴더가 누락되었습니다.


2

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


여러 곳에 동일한 답변 을 게시하는 이유는 무엇 입니까?
devnull 2014

8
솔루션을 추적하려고했기 때문에 두 가지 모두에 적용됩니다. 주위를 사냥하지 못하도록 누군가를 구하십시오.
Mastro

중복 답변을 게시해서는 안됩니다. 그게 내가 말할 수있는 전부입니다.
devnull 2014

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

U는 위의 코드를 사용할 수 있습니다.


1

새 앱의 응용 프로그램 풀을 DefaultAppPoolIIS에서 Classic.NET과 함께 파이프 라인을 사용하는 것으로 설정 했습니다 .NET v.2.0.

문제를 해결하기 위해 Integrated파이프 라인과 .NET v4.0. 이 새로운 응용 프로그램에 대해서만 모든 것이 예상대로 작동하기 시작했습니다.

이 새 앱 풀을 응용 프로그램에 할당하는 것을 잊지 마십시오. IIS에서 애플리케이션을 선택하고 클릭 Basic Settings한 다음 앱에 대한 새 앱 풀을 선택합니다.


0

최근에 더 자주 보는 것은 IIS이며 32 비트 응용 프로그램을 실행할 수 있습니다.

이것이 당신이 시도한 것입니까? 그렇지 않으면 프로덕션 및 개발 서버 버전에 대한 추가 정보가 필요합니다.


미안하지만 당신이 의미하는 바를 따르지 않았습니다. 이것은 32 비트 서버입니다. 더 많은 정보를 추가하기 위해 게시물을 업데이트했습니다.
mithun_daa

Ahhh ... 별도의 app_pool에 있습니까?
MarkKGreenway

예, 실제로 각 사이트에는 자체 앱 풀이 있습니다.
mithun_daa jul.

0

서버 2012에서 약간 다른 문제가 있습니다. 어쨌든 asp.net 4.5를 활성화하는 것을 잊었 으므로이 문제가 있으면 활성화했는지 다시 확인하십시오.


0

Azure 및 ASP.NET 4.5, IIS 8에서 Windows Server 2012 R2를 실행하고 있습니다.

프로그램 및 기능에서 모든 ASP.NET 항목을 제거한 다음 역할 및 기능 추가 (역할 기반 또는 기능 기반 설치 선택, 내 서버 선택)를 사용하여 서버 관리자로 이와 같이 ASP.NET을 다시 설치하여이 문제를 해결했습니다. 서버 역할 선택에서 웹 서버 (IIS) / 웹 서버 / 응용 프로그램 개발을 선택한 다음 ASP.NET 4.5를 클릭하고 필수 구성 요소의 설치를 확인한 다음 ASP.NET 4.5를 다시 설치했습니다.

이전 검색을 통해 문제가 실제로 ASP.NET의 등록 문제에서 비롯된 것이라고 믿게되었습니다. 이전 버전의 ASP.NET에는 실제로 다시 설치하지 않고 ASP.NET을 등록하기 위해 실행할 수있는 유틸리티가 있지만 더 이상 사용할 수없는 것 같습니다.


0

Visual Studio를 열고 참조를 확장하고 "Copy Local"속성을 "True"로 변경하는 문제를 해결했습니다.

이전 버전의 dll을 새 버전의 DLL과 비교하는 것을 발견했습니다 (작동하지 않았습니다)


0

필자의 경우 내 응용 프로그램의 기본 페이지는 기본 문서 옵션에서 누락 된 index.html이었습니다. 그것을 추가하면 403.14 금지 오류가 수정되었습니다.


0

제 경우에는 일종의 전역 필터 속성 인 사용자 지정 ActionFilterAttribute로 인해 문제가 발생했습니다. 속성은 Autofac을 통해 서비스를 인스턴스화했지만 서비스가 생성자에서 충돌했습니다.

public ActionFilterAttribute()
{
    _service = ContainerManager.Resolve<IService>();
}

public class Service: IService
{ 
    public Service()
    {
        throw new Exception('Oops!');
    }
}

0

제 경우에는 Windows 기능도 aspnet_regiis -i작동 하지도 않았습니다. 몇 시간 동안 인터넷을 파헤친 후 나만의 솔루션을 만들었습니다.

  1. 모듈의 IIS 관리자에서 UrlRoutingModule-4.0 노드에서 상속을 로컬로 변경했습니다.

    여기에 이미지 설명 입력

  2. web.config에서이 포럼의 몇 가지 팁을 혼합하여 붙여 넣었습니다.

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

도움이되기를 바랍니다.

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