ASP.NET MVC et IIS 5

Quelle est la meilleure façon d'obtenir la tenue d'une ASP.NET application MVC pour travailler sur IIS 5 (6 ou 7). Quand j'ai essayé de publier mon ASP.NET MVC application, tout ce que j'ai semblé obtenir est 404 erreurs. J'ai fait un peu de recherche sur Google et j'ai trouvé quelques solutions, mais ni l'une ni l'autre semblent très élégantes, et je m'inquiète si elles seront inutilisables une fois que je suis venu à utiliser un environnement d'hébergement partagé pour l'application.

Solution 1

  1. faites un clic droit sur le répertoire virtuel de votre application sur inetmgr.EXE.
  2. Propriétés - > Onglet Répertoire Virtuel - > Configuration.
  3. ajouter une nouvelle extension de cartographie. L'extension devrait être .* qui sera mappé sur L'exécutable C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_isapi.dll, ou l'emplacement approprié sur votre ordinateur (vous pouvez simplement copier ce à partir de la cartographie .fichiers aspx). Sur la cartographie de la décocher "vérifiez que le fichier exister."
  4. 3 X OK et vous êtes prêt à partir.
  5. si vous voulez, vous pouvez appliquer ce paramètre à tous vos sites web. Dans étape 1, cliquez sur "site Web par défaut"" nœud au lieu de votre propre virtuel répertoire, et à l'étape 2 aller à la Onglet" Home Directory". Le reste, c'est la de même.

il semble un peu hacky de tout faire passer ASP.NET.

Solutions 2

éditer le routage MVC pour contenir .mvc dans L'URL et ensuite suivre les étapes de la solution 1 basée sur cette extension. Edit: le lien d'image original a été perdu, mais ici il vient du Cache de Google:

alt text

25
demandé sur Marcus Müller 2008-09-12 01:30:50

5 réponses

la réponse est ici

If *.l'extension mvc n'est pas enregistrée pour l'hébergement , il donnera 404 exception. La façon de travailler de l'hébergement MVC apps dans ce cas est de modifier mondial.caluse de routage asax dans le manière suivante.

itinéraires.Add(new Itinéraire("{controller}.mvc.aspx / {action}", nouveau MvcRouteHandler()) { Par défaut = new RouteValueDictionary (new{ contrôleur = "YourController"} ) });

de cette façon, tout votre contrôleur la demande sera à la fin *.mvc.aspx, qui est reconnu par votre hébergement. Et comme les dlls MVC sont copiés dans votre poubelle locale, pas d'installation spéciale besoin de faire pour lui.

13
répondu Dan 2008-09-11 21:45:41

je pense que de toute façon, vous devrez faire la Solution 1 .

prendre en considération la Requête HTTP pipeline.

  1. Une demande arrive dans IIS.
  2. IIS vérifie l'en-tête port/host pour voir si un site web a été configuré pour capturer les requêtes pour cet en-tête/port hôte.
  3. IIS enquête sur l'extension de fichier de la demande (.php,.ASP. ,aspx) et le remet à un ISAPI qui peut gérer ce type de demande.

ASP.NET (ou un runtime PHP). si IIS n'a pas ce mapping alors il ne remettra jamais la demande à la ASP.NET exécutez et la requête n'atteindra jamais votre code. C'est pourquoi vous avez besoin que glob (*) mapping à la ASP.NET ISAPI.

ASP.NET les urls MVC framework se terminent souvent par aucune extension de fichier. Si vous voulez que ces demandes être manipulé par ASP.NET (ou un autre exécutable) vous devez mapper toutes les requêtes indépendamment de l'extension du fichier à cette ISAPI (ie. aspnet_isapi.DLL.)

cela est souvent aussi fait pour les HttpHandlers qui ont besoin de servir hors des médias comme .jpg,.GIF. Pour que le handler soit touché, il doit être mappé sur votre code, même si .le jpg n'est pas" normal " ASP.NET extension de fichier.

HTH,

Tyler

8
répondu Tyler 2008-09-11 21:46:00

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

cela va réinitialiser les paramètres du registre IIS pour l'utilisateur aspnet.

Créer le répertoire virtuel: 1. Clic droit sur le répertoire que vous voulez convertir

  • sélectionner les propriétés
    1. sous répertoire, sélectionnez Créer.
    2. sous Configuration, sélectionnez Add.
    3. pour les exécutables insérer:

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

pour L'Extension, insérer :*

  • décocher la case "Vérifier l'existence du fichier"

  • sous Documents, ajouter fichier de point d'entrée, c'est-à-dire: par défaut.htm, index.htm, Global.asax

  • sous répertoire Paramètres

    1. sélectionner Modifier...
    2. , sélectionnez l'accès Anonyme
    3. décochez la case Autoriser IIS pour le contrôle de mot de passe
    4. , désactivez l'authentification de Base
    5. , désactivez l'authentification Windows Intégrée
    6. sous ASP.NET, assurez-vous que version = v4.0.30319

prendre note du nom d'utilisateur ie: IUSR_AVSJ82S

configurez le partage de l'autorisation de répertoire physique:

  • dans Windows explorer, allez dans le répertoire physique qui a été converti en Répertoire virtuel. Cliquez avec le bouton droit de la souris sur le nom du répertoire
  • choisir des propriétés
  • sous l'onglet sécurité, sélectionnez Ajouter
  • entrez le nom D'utilisateur IIS ie: IUSR_AVSJ82S cliquez sur Vérifier le nom.
  • cliquez sur OK
  • ensemble les autorisations de Lecture et d'Écriture.
3
répondu ranni rabadi 2012-11-08 01:56:26

FYI:sur le serveur 2003 (développement d'une application qui devait se connecter au RPS), il ne m'a pas permis d'ajouter l'extension .* , J'ai utilisé la solution alternative modifiant la clause de route, et que travaillé.

1
répondu Eric Brown - Cal 2009-05-15 18:07:04

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

cela a fonctionné pour la question sur le débordement de la cheminée Où puis-je obtenir ASP.NET hébergement MVC? .

1
répondu Iain Holder 2017-05-23 12:19:30