Suppression d'applications fantômes des pools d'applications dans IIS7


38

J'ai une application dans l'un de mes pools d'applications qui a un chemin virtuel "/Site/login.aspx". Je souhaite le supprimer, mais il n'existe plus sur mon ordinateur et des problèmes se posent lors de la configuration d'AppFabric.

Je comprends que vous pouvez supprimer ces applications fantômes en recréant l’application dans IIS, puis en cliquant sur Supprimer. Cela supprimera l'application du pool, mais dans ce cas, je ne peux pas recréer l'application en raison de /login.aspx dans le chemin virtuel.

Des idées comment je supprime cette entrée erronée?

Merci

Réponses:


44

Depuis que j'ai le même problème; des pools d’applications avec des applications qui n’existaient plus, j’ai fait quelques recherches et enfin réussi à résoudre le problème.

Voici quelques étapes:

  1. Recherchez et modifiez votre fichier de configuration IIS 7 "applicationHost.config" avec un éditeur de texte. Il devrait être stocké dans " C: \ windows \ system32 \ inetsrv \ config " car le dossier est en quelque sorte "protégé", je l' utilise généralement comme suit:
    1. Ouvrir l'explorateur Windows
    2. Accédez à "C: \ windows \ system32 \ inetsrv \ config"
    3. Copiez le fichier "applicationHost.config"
    4. Collez-le dans un dossier où vous pouvez l'éditer, par exemple votre bureau.
    5. Ouvrez-le avec votre éditeur de choix et éditez-le
    6. Recopiez-le avec l'explorateur Windows dans "C: \ windows \ system32 \ inetsrv \ config"
  2. Faites une sauvegarde de votre fichier "applicationHost.config"!
  3. Recherchez avec un éditeur de texte dans votre "applicationHost.config" pour vos applications non existantes. Ils devraient être situés quelque part dans un <application ...>nœud XML.
  4. Supprimez le ou les <application ...>nœuds de toutes vos applications fantômes.
  5. Enregistrez le fichier et recopiez-le dans "C: \ windows \ system32 \ inetsrv \ config".
  6. Actualisez la console de gestion IIS. Vos pools d'applications doivent maintenant être sans les applications fantômes que vous avez précédemment supprimées.
  7. En fait, supprimez le pool d'applications maintenant vide.

Cela a fonctionné pour moi, si cela ne fonctionne pas pour vous, s'il vous plaît poster un commentaire ici. Cette publication a été une aide précieuse sur le forum IIS .


6
De plus, je suis tombé sur cet article. Je ne l'utilisais pas car la solution ci-dessus fonctionnait pour moi. Hunting Zombies - Comment supprimer les applications Web orphelines iis
Col

1
L’approche Powershell dans le lien dans le commentaire de @Col ci-dessus est une solution propre et elle fonctionne très bien.
Recep

4

C'est probablement plus sûr et plus simple que de modifier applicationHost.config.

Powershell  
PS C:\Windows\system32> import-module WebAdministration
PS C:\Windows\system32> iis:
PS IIS:\> cd .\AppPools
PS IIS:\AppPools> ls
PS IIS:\AppPools> del [name of phantom AppPool]  

1
Cela supprime les pools d'applications . Pour supprimer des applications (fantômes), utilisez la méthode
bvgheluwe

1

Beaucoup plus simple:

  1. Affichez l'application obsolète X et souvenez-vous de l'ancien chemin Y
  2. Créez le (ancien) chemin / dossier Y avec l'explorateur
  3. Actualiser la console de gestion IIS
  4. Vous trouverez le dossier Y qui vient d'être créé et l'application assignée X
  5. Faites un clic droit sur (ancienne) application X et choisissez "Supprimer"
  6. Supprimer le chemin Y avec Explorer
  7. Actualiser à nouveau la console de gestion IIS
  8. Hourra

1

Les applications enfants ne sont pas automatiquement supprimées et le gestionnaire IIS ne peut pas les afficher dans l'arborescence, alors c'est votre problème ...

Une méthode rapide et efficace consiste à utiliser un script PowerShell pour obtenir toutes les applications, vérifier si le chemin physique existe toujours et, dans le cas contraire, supprimer l'application:

# This is for IIS 7, make sure the snap-in is installed first: https://www.iis.net/downloads/microsoft/powershell
Add-PSSnapin WebAdministration

# Get all IIS sites
Get-ChildItem IIS:\Sites | foreach {
    $site = $_;

    # Get all applications without existing physical path
    $applications = Get-ChildItem $site.PsPath | Where-Object { $_.NodeType -eq "application" -and (Test-Path $_.PhysicalPath) -eq $False };

    # List all phantom applications
    $applications | FT

    # Remove applications
    $applications | Remove-WebApplication -Site $site.Name
}

Juste une petite correction: le gestionnaire IIS peut afficher les applications fantômes en sélectionnant le nœud 'Pools d'applications' ou 'Sites' et en sélectionnant 'Afficher les applications' sur un appPool / site. Cela ne permet cependant que de supprimer du nœud 'Sites'!
Ronald

Cela fonctionnait parfaitement pour moi, même si je devais remplacer "Add-PSSnapIn" par "Import-Module" sur Server 2012 R2.
ldam

1

Il existe un moyen facile de résoudre ce problème.

  1. Sélectionnez le site avec les applications fantômes dans le pool d'applications.
  2. Sur le côté droit du menu "Action", sélectionnez "Afficher les applications". Cette liste devrait montrer toutes les applications présentes sur le site, fantômes ou non.
  3. Tout ce que vous avez à faire est de sélectionner l'application et de sélectionner "Supprimer" dans le menu "Action" de droite.

0

Pourquoi ne pas éditer MetaBase.xml directement? Bien sûr, sauvegardez-le avant cela.

Vous pouvez également créer un pool "temporaire", y déplacer toutes les autres applications, supprimer le pool orig et renommer (si nécessaire) le nouveau pool.


4
Première raison: parce que c'est IIS7, il faut donc éditer ApplicationHost.config! Mais je suis d’accord, je ne comprends pas pourquoi ce n’est pas seulement "plonk cette URL dans un pool d’applications différent en premier"?
TristanK

2
Merci pour l'aide. J'avais d'abord déplacé l'URL dans un pool temporaire, ce qui supprime le problème avec AppFabric. Cependant, je ne vois toujours pas comment je pourrais supprimer une application douteuse, car vous ne pouvez pas supprimer un pool d'applications tant que des applications l'utilisent, et je ne peux pas supprimer l'application du pool d'applications
Col

0

J'ai fait une combinaison de deux réponses énumérées ci-dessus car je ne voulais pas bricoler applicationHost.config manuellement.

Étape 1 - Créez un pool d'applications temporaire - disons "temp".

Étape 2 - Déplacez toutes les applications fantômes vers ce pool d'applications temporaires.

Étape 3 - Utilisez Powershell à partir d’une des réponses ci-dessus -

Powershell  
PS C:\Windows\system32> import-module WebAdministration
PS C:\Windows\system32> iis:
PS IIS:\> cd .\AppPools
PS IIS:\AppPools> ls
PS IIS:\AppPools> del [name of phantom AppPool]  

Voila!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.