web-dev-qa-db-fra.com

Déploiement de MVC 3 vers IIS6

À l'origine, j'avais déployé le site avec une partie de la DLL configurée pour copier en local (comme suggéré par une autre SO publication). Après cet échec, j'ai installé le package MVC 3 sur le serveur. 

Lorsque je visite mon site, je reçois:

Liste de répertoires refusée cette virtuelle Répertoire ne permet pas le contenu à être répertorié.

J'ai vu le blog de haacked , mais il a presque 3 ans maintenant et une partie ne fonctionne tout simplement plus. Est-ce que quelqu'un sait ce qu'il faut faire pour que cela fonctionne après l'installation de MVC 3 sur le serveur?

METTRE À JOUR
J'ai trouvé un autre link sur le blog de haacked. Apparemment, cela devrait fonctionner (pas besoin de faire des mappages génériques). Le répertoire virtuel de mon site Web est configuré pour exécuter ASP.NET 4.0.30319. J'ai installé ASP.NET MVC 3 et j'exécute IIS6 (Windows Server 2003 R2, je suis sûr que c'est IIS6).

26
P.Brian.Mackey

Le répertoire virtuel a été défini sur ASP.NET 4.0. Pendant ce temps, le "Site Web par défaut" était configuré pour exécuter ASP.NET 2.0. J'ai changé le "Site Web par défaut" pour exécuter 4.0 en plus de la virt. répertoire et il a commencé à fonctionner. La raison est un mystère pour moi, mais cela a fonctionné.

25
P.Brian.Mackey

On dirait que vous n'avez pas configuré le mappage générique. Vous devez configurer un mappage dans IIS qui envoie toutes les demandes au pipeline ASP.NET pour traitement. Étant donné que le mappage n'est pas configuré, la requête est interprétée comme une navigation dans un répertoire (ce qui est probablement interdit dans votre configuration).

De Haacked :

  1. Dans les propriétés IIS du site Web, cliquez sur l'onglet Répertoire de base.
  2. Cliquez sur le bouton "Configuration ...". Dans l'onglet "Mappings", cliquez sur "Insérer ..."
  3. En regard du libellé "Cartes d'application générique" Dans la zone de texte, tapez "c:\windows\Microsoft.net\framework\v2.0.50727\aspnet_isapi.dll"
  4. Décochez la case "Vérifier que le fichier existe" Cliquez sur OK.
22
Adam Price

Je pense que la fonctionnalité ASP.NET 4 URL sans extension ne fonctionne pas pour le répertoire virtuel sur iis v6, à moins que Site Web par défaut soit également configuré pour exécuter ASP.NET v4.0 . Pour moi, définir ASP.NET v4.0 sur Web par défaut Site n'est pas une option car il casse les applications Web existantes du répertoire virtuel v2.0 . L'ajout de cartes d'application génériques sur le répertoire virtuel mvc3 a fonctionné pour moi . Voici la liste des étapes que j'ai effectuées pour déployer mvc sur iis6.

  1. ASP.NET v4 est déjà installé sur le serveur Windows 2003
  2. Installer AspNetMVC3Setup.exe
  3. Copiez les fichiers mvc3 webapp sur le serveur sans les dll mvc3 dans le dossier bin
  4. Créer un répertoire virtuel pointant vers le dossier de l'application
  5. Définissez la version ASP.NET sur 4.0.30319
  6. Ajouter le mappage d'application générique à c:\windows\Microsoft.net\framework\v4.0.30319\aspnet_isapi.dll et décochez la case Vérifier que le fichier existe
12
flynhigh

A PROPOS DE WILCARD APPLICATION MAP : Sachez que cette option force IIS à intercepter toutes les demandes adressées au serveur Web. Cela inclut les demandes d'images, de pages classiques ASP et de pages HTML. Par conséquent, l'activation d'un mappage de script générique sur ASP.NET a des conséquences sur les performances.

AUTRE SOLUTION: Dans W2K3 SP2 avec IIS6, .NET Framework (2, 3.5, 4). 

Aller au registre:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0

Si nécessaire, créez DWORD EnableExtensionlessUrls avec la valeur 0 .

Ensuite, à partir de la fenêtre de commande, exécutez: resetiis

Créez une application ASP.NET à partir du modèle MVC3.

Maintenant, dans le global.asax, configurez les routes comme ceci:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    //routes.MapRoute(
    //    "Default", // Route name
    //    "{controller}.mvc/{action}/{id}", // URL with parameters
    //    new { controller = "Home", action = "Index", id = "" } // Parameter defaults
    //);

    routes.MapRoute(
            "Default",
            "{controller}.aspx/{action}/{id}",
            new { action = "Index", id = "" }
          );

    routes.MapRoute(
      "Root",
      "",
      new { controller = "Home", action = "About", id = "" }
    );
}

Créez AppPool pour .NET Framework 4 et configurez l'application Web pour qu'elle puisse utiliser cette réserve. Vous pouvez utiliser le commutateur de version ASP.NET de Denis Bauer ou utiliser Aspnet_regiis.exe.

RÉSULTAT: le navigateur affiche la page À propos de comme page par défaut.

0
Diana