47 votes

Suppression des 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 veux le supprimer mais il n'existe plus sur mon ordinateur et il me pose des problèmes pour configurer AppFabric.

Je crois savoir que vous pouvez supprimer ces applications fantômes en recréant l'application dans IIS, puis en cliquant sur Supprimer. Cela éliminera l'application du pool, mais dans ce cas, je ne peux pas recréer l'application à cause de l'erreur d'identification de l'application. /login.aspx dans le chemin virtuel

Une idée pour supprimer cette entrée erronée ?

54voto

Uwe Keim Points 2320

Comme j'avais le même problème, à savoir des pools d'applications contenant 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 fichier de configuration IIS 7 "applicationHost.config" à l'aide d'un éditeur de texte. Il doit être stocké dans " C:\windows\system32\inetsrv\config " Comme le dossier est en quelque sorte "protégé", je modifie habituellement comme suit :
    1. Ouvrir l'explorateur Windows
    2. Naviguer vers " C:\windows\system32\inetsrv\config "
    3. Copier le fichier "applicationHost.config"
    4. Collez-la dans un dossier où vous pouvez la modifier, par exemple sur votre bureau.
    5. Ouvrez-la avec l'éditeur de votre choix et modifiez-la.
    6. Copiez-le à l'aide de 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" les applications qui n'existent pas. Elles devraient se trouver quelque part à l'intérieur d'un fichier <application ...> Nœud XML.
  4. Supprimer le <application ...> 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 dépourvus des applications fantômes que vous avez supprimées précédemment.
  7. Supprimer le pool d'applications désormais vide.

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

Sachez également que lorsque vous modifiez le fichier "applicationHost.config" directement dans son emplacement d'origine, vous devez utiliser un éditeur 64 bits (par exemple Notepad++ 64 bits), car sinon il serait stocké dans " C:\Windows\SysWOW64\inetsrv\Config "au lieu de l'emplacement correct .

6voto

Thecamelcoder Points 11

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]

5voto

Oddvar Points 31

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 "Action" de droite, sélectionnez "Voir les applications". Cette liste devrait afficher toutes les applications présentes sur le site, qu'il s'agisse de Phantom ou non.
  3. Il vous suffit de sélectionner l'application et de choisir "Supprimer" dans le menu "Action" de droite.

3voto

Richard Gourlay Points 2289

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

Une méthode rapide et robuste consiste à utiliser un script PowerShell script pour récupérer toutes les applications, vérifier si le chemin physique existe toujours et, si ce n'est pas le cas, 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
}

1voto

Mathias Sch. Points 11

C'est beaucoup plus simple :

  1. Visualiser la demande périmée X et se souvenir du chemin (ancien) Y
  2. Créer le (ancien) chemin / dossier Y avec Explorer
  3. Actualiser la console de gestion IIS
  4. Vous trouverez le dossier Y qui vient d'être créé et l'application X qui lui a été attribuée.
  5. Cliquez avec le bouton droit de la souris sur l'ancienne application X et choisissez "Supprimer".
  6. Supprimer le chemin Y avec Explorer
  7. Actualiser à nouveau la console de gestion IIS
  8. Vivement

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X