2010-03-16 4 views
5

Je viens d'installer .NET 4 sur Windows SErver 2008 R2 x64 et j'obtiens 500 Erreur interne du serveur avec une application ASP.NET MVC qui fonctionnait auparavant bien sur 3.5. L'application a été mise à jour depuis le ciblage 3.5 vers la cible 4 et je l'ai personnellement construite aujourd'hui sur ma machine de développement (modifiée dans VS - Properties en .NET Framework 4)..NET Framework 4 RTM sur le serveur Windows 2008 R2

Sur le serveur, j'ai installé .NET Framework 4 Client profile et Full à la fois automatiquement via le programme d'installation de la plate-forme Web. ASP.NET MVC 2 a également été installé via Platform Installer. J'ai créé un nouveau pool d'applications .NET 4 dans IIS et y ai placé l'application Web.

J'ai également des erreurs personnalisées désactivées dans web.config mais même si aucune erreur détaillée n'est affichée - juste l'erreur IIS 7.5 500 Internal Server.

Des suggestions?

+0

avez-vous seulement installé le profil client sur le serveur ou l'infrastructure complète? –

+0

Je commencerais par suggérer des erreurs, pour en savoir un peu plus, pour commencer ... –

+0

@Mauricio: Comme il est dit dans la question, j'ai installé le profil client. @Rowlad: Vous voulez dire On ou Off? Actuellement, les erreurs CUSTOM sont désactivées, il doit donc afficher des exceptions détaillées. – mare

Répondre

6

Eh bien, c'est un problème très étrange et intéressant .. Mais je suis désireux d'aider autant que possible. J'ai actuellement un VPS avec Server 2008 R2, et j'ai installé .NET 4 RTM, et MVC 2 dessus. Ne pense pas que j'ai rencontré des problèmes de configuration, mais j'ai dû aider à configurer d'autres personnes avec elle ..

Initialement, pourriez-vous vérifier .. dans votre gestionnaire IIS, les restrictions Isapi et CGI, avez-vous avoir .NET 4 là-dedans? Quelles versions? sont-ils activés?

Si vous allez dans vos pools d'applications dans IIS, vos pools d'applications sont-ils compatibles avec .NET 4, la NOUVELLE version? Vérifiez-le, vos pools d'applications peuvent être définis sur une version différente de l'infrastructure .NET 4, qui a été supprimée/désactivée depuis. Vous pouvez essayer de créer un nouveau site Web avec un nouveau pool d'applications propre pour tester si cela fonctionne.

Si rien ne fonctionne encore, vous pouvez essayer de réinscrire .NET dans IIS avec aspnet_regiis -i

Si aucun de ces travaux, je vais essayer de revenir avec des idées plus d'options/

+0

Je me demande quelle partie de votre solution a résolu le problème? –

+3

allez dans le gestionnaire IIS, et vérifiez la "zone de restrictions d'Isapi et de CGI". Si .NET 4 est là - assurez-vous qu'il est autorisé à s'exécuter. –

+1

Si .NET n'est pas là - vous devez d'abord exécuter "aspnet_regiis -i". –

4

I résout généralement ce type de problème en réinstallant les fichiers de prise en charge ASP.NET sur les services Internet (IIS).

  1. Ouvrez une invite de commande avec des privilèges d'administrateur (de l'invite de commandes, clic droit, exécuter en tant qu'administrateur)
  2. Tapez:

    cd %WINDIR%\Microsoft.NET\Framework64\v4.0.XX.XX

    aspnet_regiis -i

Terminé . Vous devrez peut-être ouvrir IIS et réaffecter vos pools d'applications au nouveau "ASP.NET 4.0 Integrated" (ou Classic) créé.

+0

Ma configuration est correcte et j'ai les nouveaux pools d'applications ASP.NET 4. Le problème est que j'utilise mon application dans le répertoire virtuel et qu'il semble y avoir un problème avec l'héritage de Web.Config. Je viens de tester la création d'un nouveau site Web racine dans IIS et de le placer dans le pool d'applications intégré .NET 4 et cela fonctionne très bien. – mare

0

J'ai également de petits problèmes de compatibilité avec mon application ASP.NET MVC. Il se peut que vous ayez le même problème. J'ai utilisé NoSessionControllerFactory pour désactiver SessionState basé sur How can I disable session state in ASP.NET MVC? et http://billrob.com/archive/2009/07/15/asp-net-mvc-without-sessionstate.aspx. Après la mise à jour vers .NET 4.0, mon application ne fonctionnait pas. J'ai également reçu 500 Erreur interne du serveur. Après une petite modification de NoSessionControllerFactory de Global.asax.cs le monde était OK.Le code fixe ressemble à ce qui suit:

public class NoSessionControllerFactory: DefaultControllerFactory { 
    protected override IController GetControllerInstance (RequestContext requestContext, Type controllerType) { 
     if (controllerType != null) { 
      var controller = base.GetControllerInstance (requestContext, controllerType); 
      ((Controller)controller).TempDataProvider = 
       new DummyTempDataProvider(); 
      return controller; 
     } 
     else 
      return null; 
    } 
} 
public class DummyTempDataProvider: ITempDataProvider { 
    public IDictionary<string, object> LoadTempData (ControllerContext controllerContext) { 
     return new Dictionary<string, object>(); 
    } 
    public void SaveTempData (ControllerContext controllerContext, 
     IDictionary<string, object> values) { 
    } 
} 

La classe sera utilisée à l'intérieur de Global.asax.cs comme:

protected void Application_Start() { 
    RegisterRoutes (RouteTable.Routes); 

    // see https://stackoverflow.com/questions/884852/how-can-i-disable-session-state-in-asp-net-mvc 
    ControllerBuilder.Current.SetControllerFactory (new NoSessionControllerFactory()); 
} 
0

Je parie qu'il est un problème de configuration avec l'application en question . La configuration d'ASP.NET 4 diffère de celle de 3.5.

Et aussi, assurez-vous que votre application Web référence les DLL à partir de .NET 4 et non .NET 3.5.

Questions connexes