web-dev-qa-db-fra.com

ASP.NET 4.5 MVC 4 ne fonctionne pas sous Windows Server 2008 IIS 7

Il est clair que quelque chose me manque, je ne parviens pas à déployer une application ASP.NET MVC 4, .NET 4.5 simple sur un Windows Small Business Server 2008 sur IIS 7.

.NET Framework 4.5 est installé.

Devrais-je être supposé voir cette version (4.5) dans les paramètres de base du pool d'applications de l'application? Pour le moment, je n'ai que 2.0 et 4.0, la version 4.5 ressemblant à la version 3.5 qui ne fait que s'ajouter au cadre 4.0, je suppose que c'est normal.

Lorsque je navigue sur la page d'accueil, le message d'erreur suivant s'affiche:

403 - Interdit: Accès refusé. Vous n'êtes pas autorisé à afficher ce répertoire ou cette page à l'aide des informations d'identification que vous avez fournies.

Lorsque je demande le seul contrôleur nommé Page/page/index, je reçois la page 404 non trouvée. Comme le processus ASP.NET, ne recevez jamais la requête http.

Je peux demander une simple page HTML.

Le pool d'applications est défini sur .NET 4.0 et intégré en tant que mode de pipeline géré.

NETWORK SERVICE dispose d'un accès en lecture/écriture au répertoire.

L'application fonctionne parfaitement à partir de VS2012, bien sûr.

Je ne sais pas ce qui ne va pas ici et les requêtes des moteurs de recherche ne nous aident pas beaucoup.

Est-ce que quelqu'un aurait un indice, ce serait extrêmement apprécié. Merci

Modifier

Les dll sont déjà dans le dossier bin comme System.Web.Mvc, System.Web.Razor etc.

J'ai créé une page test.aspx vide pour m'assurer que le processus de travail asp.net recevait la demande, et oui, la page était OK. Il semble donc que le routage MVC ne fonctionne pas, bien que l'application Web ASP.NET MVC 3 fonctionne correctement sur ce serveur.

Après l’installation de .NET 4.5, j’ai fait un aspnet_regiis -iru au cas où cela ajouterait un dossier aspnet_client sur l’application, mais cela ne résout toujours pas le problème.

L’authentification anonyme est activée sur IIS Authentification et autorisation d’autoriser autorisent tous les utilisateurs.

ASP.NET MVC 4 est installé, je viens de faire une réparation pour en être sûr.

Même si ASP.NET MVC 4 est installé, l’erreur 404 lorsqu’elle demande l’action/page/index est renvoyée par le standard IIS et non par l’erreur standard Aspnet. Il s’agit donc en réalité du type MVC 4 Framework n’est pas correctement installé, je vérifie juste et fais une réparation. Où puis-je continuer à enquêter?

@Mystere Man, j'ai modifié l'authentification anonyme pour utiliser l'identité du pool d'applications, arrêter, démarrer l'application et toujours la même erreur. Cela ressemble vraiment à si ASP.NET MVC 4 ne prend pas la demande.

Voici une partie du web.config:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

Modifier le 27/09/2012

J'ai ré-apparié Microsoft Framework .NET 4.5 et réparé ASP.NET MVC 4, redéploiement de l'application ASP.NET MVC 4 simple et j'obtiens toujours le même comportement. Je ne sais pas quoi faire ensuite, alors j'ai commencé une prime dans l'espoir que quelqu'un puisse m'aider à trouver le problème.

Modifier le 2014/01/31

Lorsque j'ai posé cette question, j'ai signalé que la réponse acceptée était runAllManagedModulesForAllRequests car elle résolvait le problème. Mais je n'allais certainement pas utiliser cela en production. Je demande pourquoi je devais faire cela et n'avais aucune réponse.

Than Martin Hollingsworth était vraiment ce que je cherchais, un bon moyen de résoudre ce problème sans tous les problèmes de performances liés à runAllManagedModulesForAllRequests.

Nous avons presque abandonné et acheté un nouveau serveur Windows 2012 (à partir duquel l'application ASP.NET MVC fonctionne telle quelle). Après avoir essayé la solution de Martin, le serveur Windows 2008 a fonctionné.

53
Dominic St-Pierre

Si vous êtes pas en mesure d'appliquer le QFE de kb 980368 , au lieu d'utiliser le runAllManagedModulesForAllRequests comme suggéré dans la réponse acceptée réponse , vous devez utiliser la configuration des modules avec preCondition = "" ci-dessous pour éviter l’impact négatif sur le contenu statique décrit dans les articles de blog Comment asp.NET MVC Routing fonctionne et son impact sur les performances des demandes statiques et Don N'utilisez pas runAllManagedModulesForAllRequests = "true" pour que votre routage MVC fonctionne et certains commentaires sur les réponses.

Le blog de Scott Hanselman sur runAllManagedModulesForAllRequests devrait ajouter du poids à cet argument. Rick Strahl's post Mises en garde avec runAllManagedModulesForAllRequests in IIS 7/8 est la meilleure explication de l'interaction entre les paramètres que j'ai trouvés. IIS sur le attribut pré-condition du module vaut également la peine d'être lue.

N'oubliez pas que cette modification de configuration n'est pas nécessaire si vous avez appliqué le code QFE, car ce comportement devient le comportement par défaut.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>
44

Essayez d'utiliser ceci:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    ...
</system.webServer>

MODIFIER:

La solution ci-dessus fonctionnera pour .NET 3.5 ou inférieur. Si vous utilisez .NET 4.0 ou supérieur, vous pouvez essayer installer IIS7 QFE

En outre, cet article vaut la peine d'être lu pour comprendre la différence entre ces deux-là.

47
kdrvn

J'avais un problème similaire. J'ai essayé la plupart des solutions décrites ici (entrée de configuration Web.Config system.webServer, etc.) sans succès. Tout à la fin, j'ai découvert quel était le problème avec mon installation particulière. Je publiais mon site Web sur le système de fichiers local, puis copiais ces fichiers sur le serveur. Il s'est avéré que le fichier Global.asax ne faisait pas partie des fichiers publiés. Une fois que j'ai copié ce fichier, l'erreur a disparu.

9
Jesus Diaz

Selon https://stackoverflow.com/a/12521807/695829

J'ai eu le même problème et ce correctif a résolu le problème suivant:: http://support.Microsoft.com/kb/980368

3
Daniel de Zwaan

Comme mentionné par SonicTheLichen, si vous publiez à partir de Visual studio, le fichier gloabal.asax n'est pas copié par défaut. En copiant le fichier global.asax sur votre serveur Web, le problème devrait être résolu. Merci SonicTheLichen d'avoir prouvé la solution.

Cordialement, Saurabh

1
user3565848

Je ne sais pas si cela résoudra votre problème, mais cela en a résolu un que j'avais avec le déploiement et l'application MVC sur IIS.

J'ai dû ajouter une carte d'application générique à aspnet_isapi.dll pour le répertoire home/virtual de l'application. Vous pouvez le faire en cliquant avec le bouton droit de la souris sur le site Web/répertoire virtuel et en sélectionnant l’onglet Répertoire de base/répertoire virtuel, en cliquant sur le bouton de configuration, puis en cliquant sur le bouton Insérer de la section Cartes génériques de l’application.

C:\WINDOWS\Microsoft.net\Framework64\v4.0.30319\aspnet_isapi.dll

Bonne chance!

0
BlakeH

Je devais activer les scripts dans la section Mappage du gestionnaire des propriétés du site Web dans IIS.

Handler Mappings

Ouvrez IIS, cliquez sur le site Web en question. Ouvrez les mappages de gestionnaires et cliquez sur "Modifier les autorisations des fonctionnalités". Cochez les cases Script et exécution, puis cliquez sur OK. Bon aller!

0
BenM

J'avais un problème similaire. J'ai dû déployer un site .net MVC sur un nouveau serveur avec Windows 2008 et IIS 7.5 installé. Lorsque j'ai vérifié les programmes et les fonctionnalités, j'ai constaté que seul le .Net Framework 4.5.1 était J'ai activé manuellement la fonctionnalité Windows .Net 3.5.1.Après l'installation de MVC 4.0, le routage ne fonctionnait pas.

Ma solution:
1) Désinstaller le framework .Net 4.5.1 et MVC 4.0
2) Installer le .Net Framework 4.0
3) Installer .Net Framework 4.5.1
4) Installer MVC 4.0

0
Patrick Koorevaar

Je sais que c'est vieux, mais les mises à jour de Windows me font perdre quelques heures:

Si vous gérez vos exceptions dans Global.asax, cela peut également être simple: conserver les mises à jour de Windows de la même manière que votre dev env ... Pour moi, je n'ai évidemment pas abouti à une exception "ne peut pas charger ....", que mon global.asax a essayé de gérer et a eu à son tour le même problème mais en cachant le problème sous-jacent .....

0
user1515791