Programming

IIS 7.5의 ASP.NET MVC

procodes 2020. 3. 3. 23:08
반응형

IIS 7.5의 ASP.NET MVC


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 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 임).


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 서버에서 "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를 설치하십시오. 404가 표시되면이 업데이트가 없기 때문일 수 있습니다. isapi 모듈을 찾을 수없고 이것 없이는 할 수있는 일이 많지 않습니다!


또한 AppPool통합 모드로 전환 할 수 있습니다 . Thnx에서 Michael Bianchi ( https://stackoverflow.com/a/7956546/1143515 )에는 밑줄 만 표시하고 싶습니다.


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

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


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

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

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


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

PrecompiledApp.config

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


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


WebDeploy IIS 확장을 사용하여 웹 사이트를 IIS6에서 IIS7.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를 admin으로 실행하여이 오류를 해결할 수 있습니다. 여기에 이미지 설명을 입력하십시오

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

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


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

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

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

<remove name="WindowsAuthentication" />

분명히 이것은 Windows 인증 모듈을 제거하여 어쨌든 모든 것을 무너 뜨린 것처럼 보였습니다.

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


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

IIS 및 Asp.net 수정


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

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

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

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


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

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

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

Please note for Windows 8 users you need to add/remove windows components and remove the version of .net reboot then re-install in order to register it with IIS. I presume this happens if you get .net 4.5 from visual studio and install IIS afterwards.


As strange as it may seem, reinstalling IIS was what has worked for me, with the following command run from inside the .net version folder:

aspnet_regiis.exe /i

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

When I first run this command, I begun getting the HTTP Error 403.14. But once I runned the command again it solved the problem.

Obs: Another thing I also did was to remove HTTP Redirect from the server features in Server Management screen before reiinstalling IIS. Maybe this also had an impact in solving the problem, but I am not sure. So, if reinstalling IIS still doesn't work, please try removing HTTP Redirect and try again. Hopefully it may work for you too.


To solve this problem without having to resort to 32 bit mode you will have to update the source code for this project

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)));

I have raised this issue as a discussion on the discussion board at the IT cloud codeplex project.

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


This worked for me and it might be useful to another one.

Maybe all components required are not present or/and not all are registered correctly. In order to solve this, try to uncheck all options inside Control Panel -> Turn Windows features on or off -> Internet Information Services -> World Wide Web Services -> Application Development Features, uncheck all options and recheck all then reset the IIS and check if the problem is solved.

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


If you're running IIS 8.5 on Windows 8, or Server 2012, you might find that running mvc 4/5 (.net 4.5) doesn't work in a virtual directory. If you create a local host entry in the host file to point back to your local machine and then point a new local IIS website to that folder (with the matching host header entry) you'll find it works then.


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


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

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


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

참고 URL : https://stackoverflow.com/questions/2374957/asp-net-mvc-on-iis-7-5



반응형