ASP.NET 4.5 MVC 4가 Windows Server 2008 IIS 7에서 작동하지 않음
분명히 뭔가 빠진 것이 있습니다. IIS 7의 Windows Small Business Server 2008에 간단한 ASP.NET MVC 4, .NET 4.5 앱을 배포 할 수 없습니다.
.NET Framework 4.5가 설치됩니다.
응용 프로그램의 응용 프로그램 풀 기본 설정에서 해당 버전 (4.5)을 확인해야합니까? 지금은 2.0과 4.0 만 가지고 있는데 4.5는 4.0 프레임 워크 위에 추가 된 3.5와 같기 때문에 정상이라고 생각합니다.
홈 페이지를 탐색 할 때 다음 오류가 발생했습니다.
403-금지됨 : 액세스가 거부되었습니다. 제공 한 자격 증명을 사용하여이 디렉터리 또는 페이지를 볼 수있는 권한이 없습니다.
Page / page / index라는 유일한 컨트롤러를 요청하면 404 not found 페이지가 나타납니다. ASP.NET 프로세스와 마찬가지로 http 요청을받지 않습니다.
간단한 HTML 페이지를 요청할 수 있습니다.
응용 프로그램 풀은 .NET 4.0으로 설정되고 관리되는 파이프 라인 모드로 통합됩니다.
NETWORK SERVICE는 디렉토리에 대한 읽기 / 쓰기 액세스 권한이 있습니다.
앱은 물론 VS2012에서 완벽하게 작동합니다.
여기에없는 것이 무엇인지 알 수없고 검색 엔진 쿼리가별로 도움이되지 않습니다.
누구든지 힌트를 가지고 있다면 대단히 감사하겠습니다. 감사
편집하다
dll은 이미 System.Web.Mvc, System.Web.Razor 등과 같은 bin 폴더에 있습니다.
asp.net 작업자 프로세스가 요청을 받고 있는지 확인하기 위해 빈 test.aspx 페이지를 만들었으며 예 페이지는 정상이었습니다. 따라서 해당 서버에서 ASP.NET MVC 3 웹 앱이 제대로 작동하지만 MVC 라우팅이 작동하지 않는 것 같습니다.
.NET 4.5 설치 후 앱에 aspnet_client 폴더를 추가 한 경우를 대비하여 aspnet_regiis -iru를 수행했지만 여전히 문제가 해결되지는 않습니다.
익명 인증은 IIS 인증 섹션에서 활성화되며 권한 부여는 모든 사용자에게 허용을 표시합니다.
ASP.NET MVC 4가 설치되어 있는지 확인하기 위해 방금 수리했습니다.
ASP.NET MVC 4가 설치된 경우에도 / page / index 작업을 요청하는 404 오류는 표준 aspnet 오류가 아닌 표준 IIS에서 반환됩니다. 그래서 실제로 MVC 4 프레임 워크가 제대로 설치되지 않은 것처럼 보입니다. 다시 한 번 확인하고 수리하면됩니다. 어디에서 계속 조사 할 수 있습니까?
@Mystere Man, 응용 프로그램 풀 ID를 사용하고 앱을 중지하고 시작하고 여전히 동일한 오류를 사용하도록 익명 인증을 변경했습니다. ASP.NET MVC 4가 요청을받지 않는 것처럼 보입니다.
다음은 web.config의 일부입니다.
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
2012/09/27 수정
Microsoft Framework .NET 4.5를 다시 페어링하고 ASP.NET MVC 4를 복구하고 간단한 ASP.NET MVC 4 앱을 다시 배포했는데 여전히 동일한 동작이 나타납니다. 다음에 무엇을해야할지 모르겠 기 때문에 누군가가 문제를 찾는 데 도움을 줄 수 있기를 바라며 현상금을 시작했습니다.
2014/01/31 수정
이 질문을했을 때 문제가 해결 되었기 때문에 runAllManagedModulesForAllRequests를 수락 된 답변으로 표시했습니다. 그러나 나는 확실히 이것을 프로덕션에서 사용하지 않을 것입니다. 왜 이렇게해야하는데 답이 없었는지 묻습니다.
Martin Hollingsworth 보다 대답은 실제로 내가 찾고 있던 것이었고 runAllManagedModulesForAllRequests와 관련된 모든 성능 문제 없이이 문제를 해결하는 좋은 방법이었습니다.
우리는 거의 포기하고 새로운 Windows 2012 서버 (ASP.NET MVC 앱이있는 그대로 작동 함)를 구입했습니다. Martin의 솔루션을 시도한 후 Windows 2008 서버가 작동했습니다.
kb 980368 에서 QFE 를 적용 할 수 없는 경우 수락 된 답변 에서 제안 된 runAllManagedModulesForAllRequests 솔루션 을 사용하는 대신 아래에 설명 된대로 정적 콘텐츠에 대한 부정적인 영향을 방지하기 위해 아래 표시된 preCondition = "" 과 함께 모듈 구성을 사용해야합니다 . 블로그 게시물 asp.NET MVC 라우팅 작품과 정적 요청의 성능에 미치는 영향 방법 및 당신의 MVC 작업에 라우팅 가져올 때 음주 = "true"로 runAllManagedModulesForAllRequests을 사용하지 및 답변에 대한 의견의 일부.
runAllManagedModulesForAllRequests에 대한 Scott Hanselman의 블로그 게시물은 이 인수에 가중치를 추가해야합니다. IIS 7/8의 runAllManagedModulesForAllRequests에 대한 Rick Strahl의 게시물 경고 는 내가 찾은 설정 간의 상호 작용에 대한 가장 좋은 설명입니다. 모듈 preCondition 속성 에 대한 IIS 문서 도 읽을 가치가 있습니다.
이 동작이 기본값이되므로 QFE를 적용한 경우이 구성 변경이 필요하지 않습니다.
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
이것을 사용해보십시오 :
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
...
</system.webServer>
편집하다:
위의 솔루션은 .NET 3.5 이하에서 작동합니다. .NET 4.0 이상을 사용 하는 경우 IIS7 QFE를 설치해 보십시오.
또한 이 기사 는 두 가지의 차이점을 이해하기 위해 읽을 가치가 있습니다.
비슷한 문제가있었습니다. 여기에 설명 된 많은 솔루션 (Web.Config system.webServer 구성 항목 등)을 시도했지만 아무 소용이 없었습니다. 마지막에 특정 설치에서 문제가 무엇인지 발견했습니다. 내 웹 사이트를 로컬 파일 시스템에 게시 한 다음 해당 파일을 서버에 복사했습니다. Global.asax 파일은 게시 된 파일의 일부가 아닌 것으로 나타났습니다. 해당 파일을 복사하면 오류가 사라졌습니다.
당 https://stackoverflow.com/a/12521807/695829
동일한 문제가 발생했으며이 핫픽스가 해결되었습니다. : http://support.microsoft.com/kb/980368
SonicTheLichen에서 언급했듯이 Visual Studio에서 게시하는 경우 gloabal.asax 파일은 기본적으로 복사되지 않습니다. global.asax를 웹 서버에 복사하면 문제가 해결됩니다. 솔루션을 입증 해 주신 SonicTheLichen에게 감사드립니다.
감사합니다, Saurabh
이것이 문제를 해결할 수 있을지는 모르겠지만 IIS에 MVC 앱을 배포하고 있던 문제를 해결했습니다.
응용 프로그램의 홈 / 가상 디렉터리에 대한 aspnet_isapi.dll에 와일드 카드 응용 프로그램 맵을 추가해야했습니다. 웹 사이트 / 가상 디렉터리를 마우스 오른쪽 단추로 클릭하고 홈 디렉터리 / 가상 디렉터리 탭을 선택하고 구성 단추를 클릭 한 다음 와일드 카드 응용 프로그램 맵 섹션 아래에있는 삽입 단추를 클릭하면됩니다.
C : \ WINDOWS \ microsoft.net \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll
행운을 빕니다!
비슷한 문제가있었습니다. Windows 2008 및 IIS 7.5가 설치된 새 서버에 .net MVC 사이트를 배포해야했습니다. 프로그램과 기능을 확인했을 때 .Net Framework 4.5.1 만 설치되어있는 것을 확인했습니다. .Net 3.5.1 Windows 기능을 수동으로 활성화했습니다. MVC 4.0을 설치 한 후 라우팅이 작동하지 않았습니다.
내 솔루션 :
1) .Net 4.5.1 프레임 워크 및 MVC 4.0
설치 제거 2) .Net Framework 4.0
설치 3) .Net 프레임 워크 4.5.1
설치 4) MVC 4.0 설치
나는 이것이 오래되었다는 것을 알고 있지만 Windows 업데이트는 이제 몇 시간을 낭비했습니다.
Global.asax에서 예외를 처리하는 경우 Windows 업데이트를 dev 환경과 동일하게 유지하는 것도 간단 할 수 있습니다 ... 저에게는 분명히 이로 인해 "로드 할 수 없습니다 ...."예외가 발생했습니다. 내 global.asax가 처리하려고 시도했고 차례로 동일한 문제가 있었지만 근본적인 문제를 숨기고 있습니다 .....
IIS에서 웹 사이트 속성의 처리기 매핑 섹션에서 스크립트를 활성화해야했습니다.
IIS를 열고 해당 웹 사이트를 클릭하십시오. 핸들러 매핑을 열고 "기능 권한 편집"을 클릭합니다. 스크립트 및 실행 확인란을 선택한 다음 확인을 클릭합니다. 잘 됐네요!
'programing' 카테고리의 다른 글
Windows에서 개발하는 Meteor 지원 (0) | 2021.01.19 |
---|---|
LINQ Group By 및 Select 컬렉션 (0) | 2021.01.19 |
해시 배열에서 값 수집 (0) | 2021.01.19 |
vba를 사용하여 현재 작업 디렉토리를 얻는 방법은 무엇입니까? (0) | 2021.01.19 |
개체 데이터 소스가있는 ng-options (0) | 2021.01.19 |