Question

Quelle est la meilleure façon d'héberger une application ASP.NET MVC pour qu'elle fonctionne sur IIS 5 (6 ou 7).Lorsque j'ai essayé de publier mon application ASP.NET MVC, tout ce que j'ai semblé obtenir, ce sont des erreurs 404.J'ai fait un peu de recherche sur Google et j'ai trouvé quelques solutions, mais aucune ne semble très élégante, et je m'inquiète si elles seront inutilisables une fois que j'utiliserai un environnement d'hébergement partagé pour l'application.

Solution 1

  1. Cliquez avec le bouton droit sur le répertoire virtuel de votre application sur inetmgr.exe.
  2. Propriétés->Onglet Répertoire virtuel-> Configuration.
  3. Ajoutez une nouvelle extension de mappage.L'extension doit être. *, Qui sera mappée à l'exécutable C: Windows Microsoft.net Framework V2.0.50727 aspnet_isapi.dll, ou l'emplacement approprié sur votre ordinateur (vous pouvez simplement copier ceci à partir du mappage pour .aspx fichiers).Sur le mappage, décochez "Vérifiez que ce fichier existe".
  4. 3 X OK et vous êtes prêt à partir.
  5. Si vous le souhaitez, vous pouvez appliquer ce paramètre à tous vos sites Web.Dans Step1, cliquez sur le nœud "Site Web par défaut" au lieu de votre propre répertoire virtuel, et à l'étape 2, accédez à l'onglet "Directory Home".Le reste est le même.

Il semble un peu compliqué de tout acheminer via ASP.NET.

Solutions 2

Modifiez le routage MVC pour contenir .mvc dans l'URL, puis suivez les étapes de la solution 1 basée sur cette extension. Modifier:Le lien de l'image d'origine a été perdu, mais le voici depuis le cache de Google :

alt text

Était-ce utile?

La solution

La réponse est ici

Si l'extension * .mvc n'est pas enregistrée à l'hébergement, elle donnera une exception 404.Le moyen de travail d'héberger les applications MVC dans ce cas est de modifier Global.asax Routing Caluse de la manière suivante.

rotes.add (new Route ("{contrôleur} .mvc.aspx / {action}", new mvcRouteHandler ()) {defaultS = new RouteValueDictionary (new {contrôleur = "yourController"})});

De cette façon, toutes vos demandes de contrôleur se termineront dans * .mvc.aspx, qui est reconnue par votre hébergement.Et comme les DLL MVC sont copiées dans votre bac local, aucune installation spéciale ne doit être effectuée pour cela.

Autres conseils

Je pense de toute façon, vous devrez faire la solution 1.

Considérez le pipeline de requêtes HTTP.

  1. Une requête arrive dans IIS.
  2. IIS vérifie l'en-tête de port/hôte pour voir s'il dispose d'un site Web configuré pour capturer les demandes pour cet en-tête/port d'hôte.
  3. IIS étudie l'extension de fichier de la requête (.php, .asp, .aspx) et la transmet à un ISAPI capable de gérer ce type de requête.

Ce n'est qu'à ce stade qu'ASP.NET (ou un runtime PHP) entre en jeu. Si IIS ne dispose pas de ce mappage, il ne transmettra jamais la requête au runtime ASP.NET et la requête n'atteindra jamais votre code.C'est pourquoi vous avez besoin de ce mappage glob (*) vers l'ISAPI ASP.NET.

Les URL du framework ASP.NET MVC se terminent souvent par aucune extension de fichier.Si vous souhaitez que ces requêtes soient traitées par ASP.NET (ou un autre moteur d'exécution), vous devez mapper toutes les requêtes, quelle que soit l'extension du fichier, sur cet ISAPI (c'est-à-dire.aspnet_isapi.dll).

Cela est souvent également fait pour les HttpHandlers qui doivent diffuser des médias tels que .jpg, .gif.Pour que le gestionnaire soit touché, il doit être mappé à votre code même si .jpg n'est pas une extension de fichier ASP.NET "normale".

HTH,
Tyler

Courir:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll -i

Cela réinitialisera les paramètres du registre IIS pour l'utilisateur aspnet.

Créez le répertoire virtuel :1.Faites un clic droit sur le répertoire que vous souhaitez convertir

  • sélectionnez Propriétés
    1. sous Annuaire, sélectionnez Créer.
    2. sous Configuration, sélectionnez Ajouter.
    3. pour l'insertion exécutable :

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

pour insert d'extension :.*

  • décochez "Vérifier que le fichier existe"

  • sous Documents, ajoutez le fichier de point d'entrée, c'est-à-dire :Default.htm, index.htm, Global.asax

  • sous Paramètres du répertoire

    1. sélectionnez Modifier...
    2. sélectionnez Accès anonyme
    3. décochez Autoriser IIS à contrôler le mot de passe
    4. décochez Authentification de base
    5. décochez Authentification Windows intégrée
    6. sous ASP.NET, assurez-vous que version = v4.0.30319

PRENEZ NOTE du nom d'utilisateur, c'est-à-dire :IUSR_AVSJ82S

Définir l'autorisation de partage du répertoire physique :

  • Dans l'explorateur Windows, accédez au répertoire physique qui a été converti en répertoire virtuel.Faites un clic droit sur le nom du répertoire
  • sélectionner des propriétés
  • sous l'onglet sécurité, sélectionnez Ajouter
  • entrez le nom d'utilisateur IIS, c'est-à-dire :IUSR_AVSJ82S cliquez sur le nom du chèque.
  • cliquez sur OK
  • définissez les autorisations sur Lecture et Écriture.

FYI: Sur Server 2003 (en développement d'une application qui devait se connecter au RPS), cela ne m'a pas permis d'ajouter l'extension. *, J'ai utilisé la solution alternative modifiant la clause de route, et cela a fonctionné.

Avez-vous essayé d'ajouter .aspx à la fin du nom du contrôleur ?

Cela a fonctionné pour la question Stack Overflow Où puis-je obtenir un hébergement ASP.NET MVC ?.

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