26 votes

L'obtention de l'ASP.MVC2/VS2010 application dans IIS 7.5

J'ai récemment téléchargé la version bêta 2 de VS2010 et a commencé à jouer avec ASP.NET MVC2. Le développement Initial a été fait avec Casini, mais maintenant, je voulais exécuter l'application à partir de IIS 7.5 (je suis sous Windows 7). J'ai installé le serveur IIS6 métabase compatibilité et je VS2010 en tant qu'administrateur je peux donc utiliser l'option "Créer un Répertoire Virtuel" bouton à partir de la "Web" de l'onglet paramètres du projet. Cela a créé le web d'entrée de l'application dans IIS, mais il ne fonctionne pas.

Quand je vais à la page principale (http://localhost/MyMvcApp/), j'ai une erreur HTTP 403. Quand je vais directement à l'un des sous-pages (http://localhost/MyMvcApp/Home/), j'ai une erreur HTTP 404.

Donc je suppose que pour une raison quelconque, le routage d'URL ne fonctionne pas. Je l'ai déjà ajouté UrlRouting comme un module et un gestionnaire pour le web.config. Dans mes recherches, c'est proposé comme une solution pour certains similair problèmes. Mais pour moi cela ne fonctionne toujours pas.

La partie intéressante de mon web.config looke comme ceci:

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

49voto

Paul Points 3681

J'ai juste eu ce problème, et malheureusement le correctif ici ne fonctionne pas pour moi.

Ce qui a fait un travail était en cours d'exécution à ceci:

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

dans une fenêtre de commande...fonctionne comme un rêve maintenant!

(Donc, est ASP.Net il n'est pas installé dans IIS par défaut lorsque vous installez VS2010?)

26voto

Jeroen-bart Engelen Points 756

Après plus de vérification et d'essayer, j'ai remarqué dans les "fonctionnalités Windows Activer ou désactiver la boîte de dialogue" qui "HTTP Erreurs" et des "HTTP de Redirection" sont absents. C'est étrange car d'aussi loin que je me souvienne, cela a été installé automatiquement par le Microsoft Web Platform Installer. En tout cas, "HTTP de Redirection" semble être un besoin de fonction à avoir lorsque l'on travaille avec MVC. Donc après je l'ai installé tout semble fonctionner parfaitement.

5voto

pate Points 6759

Ajoutez ceci à votre web.config le fichier:

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

2voto

BritishDeveloper Points 4280

C'est une douleur de le faire manuellement. Mais certainement faisable! Je l'ai réussi et résumée dans le présent guide étape par étape sur l'ajout d'un mvc 2 projet existant formulaires web solution ici. Espérons que cela aide... il m'a fallu âge de travailler si tous les paramètres de configuration et il semble y avoir si peu de ressources sur le sujet.

1voto

Vitaliy Ulantikov Points 2834

Ce qui a permis à moi est à l'aide de classique pipeline pour le pool d'applications au lieu de l'intégrer: alt text

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X