web-dev-qa-db-fra.com

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

J'ai une application dans l'un de mes pools d'applications qui a un chemin virtuel de "/Site/login.aspx". Je souhaite le supprimer mais il n'existe plus sur mon ordinateur et cela me pose des problèmes 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 appuyant 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 sur la façon de supprimer cette entrée erronée?

Merci

39
Col

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

Voici quelques étapes:

  1. Localisez et modifiez votre IIS 7 "applicationHost.config" avec un éditeur de texte. Il doit être stocké dans " C:\windows\system32\inetsrv\config "Étant donné que le dossier est en quelque sorte" protégé ", je modifie généralement comme suit:
    1. Ouvrez 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 le modifier, 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" vos applications inexistantes. Ils doivent être situés quelque part à l'intérieur d'un <application ...> Noeud XML.
  4. Supprimez le <application ...> nœud (s) de toutes vos applications fantômes.
  5. Enregistrez le fichier et copiez-le dans "C:\windows\system32\inetsrv\config"
  6. Actualisez la console de gestion IIS. Vos pools d’applications devraient maintenant être sans les applications fantômes que vous avez supprimées précédemment.
  7. Supprimez réellement le pool d'applications maintenant vide.

Cela a fonctionné pour moi, si cela ne fonctionne pas pour vous, veuillez poster un commentaire ici. Une bonne aide a été cette publication sur le forum IIS .

44
Uwe Keim

C'est probablement plus sûr et plus simple que d'éditer 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]  
4
Greg Askew

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

Un moyen rapide et robuste consiste à utiliser un script PowerShell pour obtenir toutes les applications, tester si le chemin physique existe toujours et sinon, 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
}
2
Ronald

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

  1. Sélectionnez le site avec les applications Phantom dans le pool d'applications.
  2. Dans le menu droit "Action", sélectionnez "Afficher les applications". Cette liste doit montrer toutes les applications présentes sur le site, Phantom ou non.
  3. Il vous suffit de sélectionner l'application et de sélectionner "Supprimer" dans le menu "Action" de droite.
1
Oddvar

Beaucoup plus simple:

  1. Afficher l'application périmée X et mémoriser le (ancien) chemin Y
  2. Créez le (ancien) chemin/dossier Y avec l'Explorateur
  3. Actualiser IIS Management Console
  4. Vous trouverez le dossier Y juste créé et l'application X attribuée
  5. Faites un clic droit sur (ancienne) application X et choisissez "Supprimer"
  6. Supprimer le chemin Y avec l'Explorateur
  7. Actualiser IIS Management Console à nouveau
  8. Hourra
1
Mathias Sch.

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

É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 de l'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!

0
nixish

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

Ou créez un pool "temporaire", déplacez-y toutes les autres applications, supprimez le pool d'origine et renommez (si nécessaire) le nouveau pool.

0
Sunny