Question

Je viens de télécharger 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 en cours d'exécution Windows 7). J'ai installé la compatiblité métabase IIS6 et je lance VS2010 en tant qu'administrateur, je peux utiliser le bouton « Créer un répertoire virtuel » de l'onglet « Web » des paramètres du projet. Cela a créé l'entrée d'application Web dans IIS, mais il ne fonctionne pas.

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

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 à la web.config. Dans mes recherches ceci est offert comme une solution pour certains problèmes similair. 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>
Était-ce utile?

La solution 2

Après plus de contrôle et d'essayer, j'ai remarqué dans le « Windows activer ou désactiver des fonctionnalités » dialogue « Erreurs HTTP » et « redirection HTTP » ont été portés disparus. Ceci est étrange, car pour autant que je me souvienne cela a été automatiquement installé par le Microsoft Web Platform Installer. Dans tous les cas « Redirection HTTP » semblait être une caractéristique nécessaire à avoir lorsque vous travaillez avec MVC. Donc, après avoir installé tout semblait fonctionner parfaitement.

Autres conseils

Je viens d'avoir ce problème, et, malheureusement, la solution ici ne travaille pas pour moi.

Qu'est-ce que le travail a été exécuté 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 pas installé dans IIS par défaut lors de l'installation VS2010?)

Ajoutez ceci à votre fichier web.config:

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

Il est une telle douleur fait manuellement. Mais certainement faisable ! J'ai réussi et a résumé la situation dans ce guide étape par étape sur ajouter un projet à 2 mvc une solution de formulaires Web exisitng ici. Espérons que cela aide ... il m'a fallu des siècles à travailler si tous les paramètres de configuration et il semble y avoir si peu de ressources sur le sujet.

S'il vous plaît noter que vous devez exécuter en tant qu'administrateur aspnet_regiis.exe -ir, il semble évident, mais quand vous êtes fatigué d'essayer des choses sans succès à résoudre que, vous pouvez le transmettre.

Juste pour dire un grand MERCI à toutes les réponses, après de nombreuses heures à essayer différentes choses, enfin je pourrais travailler mon application MVC 2 dans IIS.

Ce qui m'a aidé à me utilise pipeline classique pour AppPool au lieu de intégré: text alt

Je construisais une application MVC2 sur mon ordinateur portable Windows 7, en utilisant .net bêta 2 et VS 2010 beta 2. Lorsque j'ai installé l'environnement de développement complet sur Windows Server 2008, y compris VS, construit la solution et il a couru, le routage a bien fonctionné.

L'étape suivante a consisté à créer un serveur de production sur Windows Server 2008, sur lequel je le .net 4.0 déployé beta, mais aucun des autres choses qui est venu avec le téléchargement de beta VS 2010. Sous cette configuration, le routage n'a jamais travaillé jusqu'à ce que je Redirection HTTP comme activer indiqué par Jeroen.

Espérons que cela aide quelqu'un qui pourrait être dans le même bateau.

Je voulais juste noter que j'avais le même problème avec 403 et 404s, mais en ajoutant la system.webServer et tous les éléments du noeud system.web/pages/namespaces résolu pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top