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

il est clair que je manque quelque chose, je suis incapable de déployer un simple ASP.NET MVC 4, .net 4.5 app on a Windows Small Business Server 2008 on IIS 7.

. le framework net 4.5 est installé.

devrais-je être supposé voir cette version (4.5) sur les paramètres de base de L'Application Pool? À l'heure actuelle, je n'ai que 2.0 et 4.0, puisque 4.5 est comme le 3.5 qui n'ajoute que sur le dessus du cadre 4.0, je suppose que c'est normal.

en parcourant la page d'accueil, j'ai eu l'erreur suivante:

403-Interdit: L'accès est refusé. Vous n'avez pas la permission de consulter ce répertoire ou cette page en utilisant les justificatifs que vous avez fournis.

quand je demande le seul contrôleur nommé Page/page / index j'obtiens la page 404 non trouvée. Comme le ASP.NET processus ne reçoit jamais la requête http.

je peux Demander une page HTML simple.

le Le Pool d'applications est défini à .NET 4.0 et intégré en mode pipeline géré.

Le service réseau

a accès en lecture/écriture au répertoire.

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

Je ne sais pas ce qui n'est pas juste ici, et les requêtes des moteurs de recherche n'aident pas beaucoup.

quelqu'un aurait une astuce, ce serait très apprécié. Merci

Modifier

les dlls sont déjà sur le dossier bin comme système.Web.Mvc, Système.Web.Razor etc.

j'ai créé un test vide.page aspx pour s'assurer asp.net le travailleur recevait la demande, et oui la page était OK. Il semble donc que le routage MVC ne fonctionne pas, bien que j'ai ASP.NET l'application web MVC 3 fonctionne très bien sur ce serveur.

après l'installation de .NET 4.5 j'ai fait un aspnet_regiis-iru au cas où, qui a ajouté un aspnet_client folder sur l'application, mais cela ne règle pas le problème.

l'Authentification Anonyme est activé sur IIS section d'Authentification, d'Autorisation et d'afficher permettre à tous les utilisateurs.

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

même si le ASP.NET MVC 4 est installé, l'erreur 404 de la requête de l'action /page / index est renvoyée par l'IIS standard et non par l'erreur aspnet standard. Donc en effet il semble que le cadre MVC4 ne soit pas correctement installé, Je n'ai qu'à faire une double vérification et une réparation. Où puis-je continuer à étudier?

@Mystere Man, j'ai changé L'authentification anonyme pour utiliser l'identité de L'Application Pool, arrêter, démarrer l'application et toujours la même erreur. On dirait que si ASP.NET MVC 4 n'accepte 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.NETFrameworkv4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_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 2012/09/27

J'ai re-paire Microsoft Framework .NET 4.5 et réparer le ASP.NET MVC 4, re-déployer le simple ASP.NET MVC 4 app, and I still get the same behaviour. Je ne sais pas quoi faire, alors j'ai commencé une prime dans l'espoir que quelqu'un pourrait m'aider à trouver le problème.

Modifier 2014/01/31

quand j'ai posé cette question, j'ai signalé les modulesmanagéesde runall pour toutes les demandes comme étant la réponse acceptée parce qu'elle a fait pour résoudre le problème. Mais je n'allait certainement pas l'utiliser dans la production. Je me demande pourquoi j'ai dû faire cela et je n'ai pas eu de réponses.

que Martin Hollingsworth la réponse était vraiment ce que je cherchais, une bonne façon de résoudre ce problème sans toutes les questions de performance liées aux modulesmanagéesde runall pour toutes les requêtes.

nous avons presque abandonné et acheté un nouveau serveur Windows 2012 (à partir de laquelle le ASP.NET MVC app work as être.) Après avoir essayé la solution de Martin, le serveur Windows 2008 a fonctionné.

51
demandé sur Community 2012-09-19 17:05:34

9 réponses

si vous êtes pas capable d'appliquer le QFE de kb 980368 , au lieu d'utiliser le runAllManagedModulesForAllRequests solution comme suggéré dans la réponse , vous devriez utiliser les modules de configuration avec condition préalable=" montré ci-dessous pour éviter l'impact négatif sur le contenu statique comme décrit dans les billets de blog comment asp.NET MVC Routing Works et son Impact sur la Performance des requêtes statiques et N'utilisez pas runallmanagedmodulesfor allrequests="true" lorsque vous obtenez votre routage MVC pour travailler et certains des commentaires sur les réponses.

Scott, Hanselman blog post sur runAllManagedModulesForAllRequests devrait ajouter un peu de poids à cet argument. Rick Strahl post Caveats with the runAllManagedModulesForAllRequests dans IIS 7/8 est la meilleure explication de l'interaction entre les paramètres que j'ai trouvé. La documentation de L'IIS sur l'attribut module condition préalable vaut également la peine d'être lue.

rappelez-vous que ce changement de configuration n'est pas nécessaire si vous avez appliqué le 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>
43
répondu Martin Hollingsworth 2017-05-23 11:55:14

essayez ceci:

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

EDIT:

la solution ci-dessus fonctionnera pour .NET 3.5 ou moins. Si vous utilisez .NET 4.0 ou plus, vous pouvez essayer en installant IIS7 QFE

Aussi, cet article mérite d'être lu pour comprendre la différence entre les deux.

47
répondu kdrvn 2012-10-06 16:52:00

j'ai eu un problème similaire. J'ai essayé plusieurs des solutions décrites ici (le Web.Système de configuration.la configuration du serveur d'entrée, etc) en vain. À la toute fin, j'ai découvert quel était le problème avec mon installation particulière. Je publiais mon site Web dans le système de fichiers local et je copiais ces fichiers sur le serveur. Il s'est avéré que le fichier Global.asax ne faisait pas partie des dossiers publiés. Une fois que j'ai copié ce fichier, l'erreur a disparu.

9
répondu Jesus Diaz 2013-05-02 18:02:44

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

j'ai eu le même problème et ce hotfix l'a corrigé:: http://support.microsoft.com/kb/980368

3
répondu Daniel de Zwaan 2017-05-23 10:30:49

comme mentionné par SonicTheLichen, si vous publiez à partir de Visual studio, le gloabal.asax fichier n'est pas copié par défaut. En copiant le mondial.asax à votre serveur devrait résoudre le problème. Grâce SonicTheLichen pour prouver la solution.

en ce qui Concerne, Saurabh

1
répondu user3565848 2014-04-23 18:13:28

Je ne sais pas si cela va résoudre votre problème, mais il a corrigé un j'ai eu le déploiement et MVC application à L'IIS.

j'ai dû ajouter un joker à aspnet_isapi.dll pour la maison / répertoire virtuel 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 d'accueil/répertoire virtuel, en cliquant sur le bouton de configuration, puis en cliquant sur le bouton Insérer dans la section Cartes géographiques de l'application.

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

bonne chance!

0
répondu BlakeH 2012-10-04 13:41:00

j'ai eu 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 vu que seul le .net Framework 4.5.1 était installé. J'ai activé manuellement la fonctionnalité Windows. Net 3.5.1. Après avoir installé MVC 4.0, le routage n'a pas fonctionné.

ma solution:

1) Désinstaller le. cadre. net 4.5.1 et MVC 4.0

2) installez le .Net Cadre 4.0

3) Installez .net framework 4.5.1

4) Installer MVC 4.0

0
répondu Patrick Koorevaar 2014-07-31 05:44:56

je sais que c'est vieux, mais les mises à jour de windows viennent de gaspiller quelques heures pour moi:

si vous gérez vos exceptions dans Global.asax cela peut aussi être simple comme garder windows updates the same as your dev env... Pour moi, je n'ai pas évidemment, cela a entraîné un "impossible de charger...."exception, que mon global.asax a essayé de gérer et à son tour avait le MÊME PROBLÈME, MAIS cacher le problème sous-jacent.....

0
répondu user1515791 2015-04-02 20:57:06

j'ai dû activer les scripts dans la section handler Mapping des propriétés du site Web dans IIS.

Handler Mappings

Ouvrir IIS, cliquez sur le site web en question. Ouvrez Handler Mappings et cliquez sur "Edit Feature Permissions". Cochez les cases pour le Script et exécutez, puis cliquez sur OK. Bon aller!

0
répondu BenM 2016-12-01 21:06:47