Quelque chose d'étrange s'est produit sur mon ordinateur portable local: mon site Web qui a longtemps fonctionné localement n'est pas lancé ...
En essayant de localiser le problème, j'ai créé un site Web simple avec un fichier 'index.html' uniquement. Cela fonctionne bien sous ASP.NET 2.0, mais lorsque j'ai changé App Pool pour utiliser 4.0 - il s'est arrêté de fonctionner.
Lorsque j'ouvre le site Web dans le navigateur, il affiche l'erreur suivante:
Service indisponible
Erreur HTTP 503. Le service est indisponible.
Et provoque également l'arrêt du pool d'applications ... Dans le journal des événements système dans la section "applications", j'ai:
Le processus de travail n'a pas pu s'initialiser correctement et n'a donc pas pu être démarré. La donnée est l'erreur.
S'il vous plaît donnez votre avis. Je ne trouve rien de connexe dans Google ... :(
P.S. J'ai VS2010, Windows Vista x64, les dernières mises à jour installées, VS SP1 est également installé ...
J'ai réinstallé .NET 64 - cela a aidé.
P.S.
Il semble que ce soit certains fichiers dans le dossier "C: /windows/Microsoft.net/Framework64/v4.0.30319/" ou que je les ai supprimés moi-même (VS se plaint parfois des fichiers dans "Fichiers temporaires ASP.NET" et leur suppression aide). .. Je n'ai probablement pas fait attention à ce que ce dossier ne soit pas temporaire ...
P.P.S.
Dans ce cas, pourquoi VS s'est plaint des fichiers dans le dossier "C: /windows/Microsoft.net/Framework64/v4.0.30319/" ... ok, maintenant c'est difficile à dire.
J'ai dû démarrer le pool d'applications défini pour mon site Web et j'ai été automatiquement arrêté en raison d'une erreur. (IIS (7.5 in my case)->Application Pools->Start stopped application pool.)
On dirait que vous avez oublié d'activer l'extension .Net 4 sur IIS. Essayez de le trouver et de l'activer dans les restrictions ISAPI et CGI
Sur la base du commentaire, il se peut qu'une partie du cadre ait été supprimée et dans ce cas, il peut être judicieux de réinstaller le cadre 4 en le nettoyant d'abord. Essayez ce billet de blog qui contient une référence à un outil qui automatise le nettoyage du processus http://blogs.msdn.com/b/astebner/archive/2008/08/28/8904493.aspx
Il existe des changements subtils entre ASP.NET 2.0 et 4.0 concernant le démarrage de l'application. Par exemple, vous ne pouvez pas accéder à l'objet HttpContext lors de l'événement Application_Start dans ASP.NET 4.0. Avez-vous du code qui pourrait masquer une exception levée à cause de cela?
Il y a quelques problèmes qui peuvent entraîner l'arrêt de l'AppPool. Un que j'ai rencontré moi-même est que toute exception non gérée sur un thread autre que le thread de travail de demande entraînera éventuellement l'arrêt du AppPool. Ce n'est pas un problème immédiat mais il finira par s'arrêter. Le runtime ASP.NET garde une trace de la fréquence à laquelle votre application échoue et s'il franchit ce seuil, le AppPool est arrêté, supprimant avec lui, toutes les applications partageant ce pool. Une StackOverflowException ou OutOfMemoryException aura finalement le même effet, ce sont des erreurs critiques et ne devrait pas se produire dans votre code de production quotidien.
Je passerais en revue les changements entre ASP.NET 2.0 et 4.0 et rechercherais des exceptions non gérées. Vous pouvez également modifier la façon dont Visual Studio gère les exceptions (vérifiez sous Débogage> Exceptions) et les interrompre lorsqu'elles sont levées, qu'elles soient gérées ou non, il s'agit d'un moyen rapide mais très détaillé de trouver des exceptions.
Je recommande de vérifier les autorisations de sécurité du dossier utilisé comme racine du site. Le lancement du processus de travail échoue probablement car il ne peut pas lire web.config
dans ce dossier.
Si vous créez une nouvelle application dans le gestionnaire IIS, par défaut, il créera un nouveau pool d'applications avec le même nom. Le problème est que ce pool s'exécute sous une nouvelle identité nommée IIS APPPOOL\yourSiteName
(dans la page Pools d'applications, il est répertorié de manière générique comme ApplicationPoolIdentity
).
Cette identité n'existe pas tant que le pool n'est pas créé. Le dossier n'accorde donc pas actuellement l'accès en lecture, puis le processus de travail échoue car il n'y a pas d'accès.
Si vous souhaitez utiliser cette identité, vous pouvez utiliser le Edit Permissions
élément dans le menu contextuel du site et accédez à l'onglet Sécurité, modifiez l'élément Security
du dossier directement via l'Explorateur, ou utilisez des outils comme icacls.exe
depuis la ligne de commande (recommandé pour la répétabilité).
Vous pouvez également modifier l'identité du pool pour qu'elle soit Network Service
ou un utilisateur spécifique. Je déconseille fortement l'utilisation de Local System
car il accorde trop d'autorisations, et Local Service
a d'autres restrictions.
REMARQUE: si vous allez ajouter le ApplicationPoolIdentity
dans la boîte de dialogue Sécurité, le IIS APPPOOL
les comptes n'apparaissent pas si vous utilisez les options Avancé/Rechercher. Vous devez taper manuellement l'ensemble "IIS APPPOOL\yourSiteName
", puis cliquez sur le Check Names
bouton pour valider - s'il est valide, la boîte de dialogue remplace votre texte par juste yourAppName
, souligné.
Je pense que dans ce cas, si vous allez dans les pools d'applications sous ur IIS. Recherchez le pool d'applications sur lequel vous exécutez votre site Web. Je suis sûr qu'il est arrêté, alors redémarrez-le et vous serez prêt à partir.
Accédez à IIS et remplacez le pool d'applications par DefaultAppPool pour votre application Web.
mon seul problème était le pool d'applications, qui montrait l'icône arrêtée. J'ai pointé mon application vers un autre AppPool et il fonctionne de nouveau. J'espère que ça aide.
J'ai dû mettre à jour mes informations d'identification réseau et je n'ai pas mis à jour le "PhysicalPathCredential" pour l'application sous IIS. Cela a été corrigé.