문제

저는 최근 VS2010 베타 2를 다운로드하고 ASP.NET MVC2를 사용하기 시작했습니다.초기 개발은 Casini를 사용하여 수행되었지만 이제는 IIS 7.5에서 응용 프로그램을 실행하고 싶었습니다(Windows 7을 실행 중입니다).IIS6 메타베이스 호환성을 설치했으며 VS2010을 관리자로 실행하여 프로젝트 설정의 "웹" 탭에서 "가상 디렉터리 만들기" 버튼을 사용할 수 있습니다.이로 인해 IIS에 웹 응용 프로그램 항목이 생성되었지만 작동하지 않습니다.

메인 페이지로 이동하면 (http://localhost/MyMvcApp/) HTTP 403 오류가 발생합니다.하위 페이지(http://localhost/MyMvcApp/홈/) HTTP 404가 표시됩니다.

그래서 어떤 이유로 URL 라우팅이 작동하지 않는 것 같습니다.이미 UrlRouting을 web.config에 모듈 및 처리기로 추가했습니다.내 검색에서 이것은 일부 유사한 문제에 대한 해결책으로 제공됩니다.하지만 나에게는 이것이 여전히 작동하지 않습니다.

내 web.config의 흥미로운 부분은 다음과 같습니다.

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
  </compilation>
  <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
  </authentication>
  <membership>
    <providers>
      <clear />
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
    </providers>
  </membership>
  <profile>
    <providers>
      <clear />
      <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
    </providers>
  </profile>
  <roleManager enabled="false">
    <providers>
      <clear />
      <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
      <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
    </providers>
  </roleManager>
  <pages>
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
    </namespaces>
  </pages>
  <httpHandlers>
    <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler" />
  </httpHandlers>
  <customErrors mode="Off" />
</system.web>
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true" >
    <remove name="UrlRoutingModule"/>
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </modules>
  <handlers>
    <remove name="MvcHttpHandler" />
    <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
    <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </handlers>
  <httpErrors errorMode="Detailed" />
</system.webServer>
도움이 되었습니까?

해결책 2

더 자세히 확인하고 시도한 후에 "Windows 기능 켜기/끄기" 대화 상자에서 "HTTP 오류" 및 "HTTP 리디렉션"이 누락된 것을 발견했습니다.제가 기억하는 한 이것은 Microsoft 웹 플랫폼 설치 프로그램에 의해 자동으로 설치되었기 때문에 이상합니다.어쨌든 "HTTP 리디렉션"은 MVC로 작업할 때 꼭 필요한 기능처럼 보였습니다.그래서 설치한 후에는 모든 것이 완벽하게 작동하는 것 같았습니다.

다른 팁

나는 방금 이 문제를 겪었고, 불행하게도 여기의 수정 사항은 나에게 효과가 없었습니다.

작업한 것은 다음과 같습니다.

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

명령 창에서...이제 꿈처럼 작동합니다!

(그러면 VS2010을 설치할 때 ASP.Net이 IIS에 기본적으로 설치되지 않는 건가요?)

이것을 당신의 web.config 파일:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!-- rest of config -->
</system.webServer>

이 작업을 수동으로 수행하는 것은 정말 고통스럽습니다.하지만 확실히 가능하다!나는 그것을 관리하고 이 단계별 가이드에 요약했습니다. 기존 웹 양식 솔루션에 mvc 2 프로젝트 추가 여기.도움이 되었기를 바랍니다...모든 구성 설정을 처리하는 데 시간이 오래 걸렸고 해당 주제에 대한 리소스가 너무 적은 것 같습니다.

관리자 권한으로 aspnet_regiis.exe -ir을 실행해야 한다는 점에 유의하세요. 이는 당연한 것처럼 보이지만 문제 해결에 성공하지 못한 채 노력하는 데 지쳤을 때 통과할 수 있습니다.

모든 응답에 대해 큰 감사를 표하고 싶습니다. 여러 시간 동안 다양한 작업을 시도한 끝에 마침내 IIS에서 MVC 2 앱을 사용할 수 있었습니다.

나에게 도움이 된 것은 통합 대신 AppPool에 클래식 파이프라인을 사용하는 것입니다.alt text

.NET 베타 2 및 vs 2010 베타 2를 사용하여 랩톱 Windows 7에 MVC2 응용 프로그램을 구축하고있었습니다.VS를 포함하여 Windows Server 2008에 전체 개발 환경을 설치하고 솔루션을 구축하고 실행했을 때 라우팅이 제대로 작동했습니다.

다음 단계는 Windows Server 2008에 프로덕션 서버를 만드는 것이었습니다. 여기에 .net 4.0 베타를 배포했지만 VS 2010 베타 다운로드와 함께 제공된 다른 기능은 배포하지 않았습니다.이 구성에서는 Jeroen이 지시한 대로 HTTP 리디렉션을 활성화할 때까지 라우팅이 작동하지 않았습니다.

이것이 같은 배에 있는 누군가에게 도움이 되기를 바랍니다.

403과 404에서 동일한 문제가 발생했지만 system.webServer 그리고 system.web/pages/namespaces 노드가 나를 위해 해결했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top