Entfernen von Phantomanwendungen aus Anwendungspools in IIS7

38

Ich habe eine Anwendung in einem meiner Anwendungspools mit dem virtuellen Pfad '/Site/login.aspx'. Ich möchte es entfernen, aber es ist nicht mehr auf meinem Computer vorhanden und es verursacht Probleme beim Einrichten von AppFabric.

Ich verstehe, dass Sie diese Phantomanwendungen entfernen können, indem Sie die Anwendung in IIS neu erstellen und dann auf Entfernen klicken. Dadurch wird die Anwendung aus dem Pool entfernt, aber in diesem Fall kann ich die Anwendung aufgrund der Datei /login.aspx im virtuellen Pfad nicht neu erstellen

Irgendwelche Ideen, wie ich diesen fehlerhaften Eintrag entferne?

Vielen Dank

Col
quelle

Antworten:

44

Da hatte ich das gleiche Problem; Anwendungspools mit Anwendungen, die nicht mehr vorhanden waren, ich habe einige Nachforschungen angestellt und es schließlich geschafft, das Problem zu lösen.

Hier sind einige Schritte:

  1. Suchen und bearbeiten Sie Ihre IIS 7-Konfigurationsdatei "applicationHost.config" mit einem Texteditor. Es sollte in " C: \ windows \ system32 \ inetsrv \ config " gespeichert sein. Da der Ordner irgendwie "geschützt" ist, bearbeite ich normalerweise wie folgt:
    1. Öffnen Sie den Windows Explorer
    2. Navigieren Sie zu "C: \ windows \ system32 \ inetsrv \ config"
    3. Kopieren Sie die Datei "applicationHost.config"
    4. Fügen Sie es in einen Ordner ein, in dem Sie es bearbeiten können, z. B. auf Ihrem Desktop
    5. Öffnen Sie es mit Ihrem Editor und bearbeiten Sie es
    6. Kopieren Sie es mit Windows Explorer zurück nach "C: \ windows \ system32 \ inetsrv \ config"
  2. Erstellen Sie eine Sicherungskopie Ihrer "applicationHost.config" -Datei!
  3. Suchen Sie mit einem Texteditor in Ihrer "applicationHost.config" nach Ihren nicht vorhandenen Anwendungen. Sie sollten sich irgendwo in einem <application ...>XML-Knoten befinden.
  4. Löschen Sie die <application ...>Knoten aller Ihrer Phantomanwendungen.
  5. Speichern Sie die Datei und kopieren Sie sie zurück nach "C: \ windows \ system32 \ inetsrv \ config"
  6. Aktualisieren Sie die IIS-Verwaltungskonsole. Ihre Anwendungspools sollten jetzt ohne die zuvor gelöschten Phantomanwendungen sein.
  7. Entfernen Sie tatsächlich den jetzt leeren Anwendungspool.

Das hat bei mir funktioniert, wenn es bei dir nicht funktioniert, poste bitte einen Kommentar hier. Eine gute Hilfe war dieser Beitrag im IIS-Forum .

Uwe Keim
quelle
6
Außerdem bin ich auf diesen Artikel gestoßen. Ich habe es nicht als Lösung verwenden , die oben für mich gearbeitet Hunting Zombies - Wie verwaiste entfernen iis Web - Anwendungen
Col
1
Der Powershell-Ansatz im obigen Link in @ Cols Kommentar ist eine saubere Lösung und funktioniert hervorragend.
Recep
4

Dies ist wahrscheinlich sicherer und einfacher als das Bearbeiten von 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]  
Greg Askew
quelle
1
Dadurch werden Anwendungspools entfernt . Verwenden Sie zum Entfernen von (Phantom-) Anwendungen den Ansatz aus dem Artikel unter serverfault.com/questions/283467/…
bvgheluwe
1

Viel einfacher:

  1. Zeigen Sie die veraltete Anwendung X an und merken Sie sich den (alten) Pfad Y
  2. Erstellen Sie den (alten) Pfad / Ordner Y mit dem Explorer
  3. Aktualisieren Sie die IIS-Verwaltungskonsole
  4. Sie finden den soeben erstellten Ordner Y und die zugewiesene Anwendung X
  5. Rechtsklicke auf (alte) Anwendung X und wähle "Entfernen"
  6. Entfernen Sie den Pfad Y mit dem Explorer
  7. Aktualisieren Sie die IIS-Verwaltungskonsole erneut
  8. Hurra
Mathias Sch.
quelle
1

Untergeordnete Anwendungen werden nicht automatisch gelöscht und der IIS-Manager kann sie nicht in der Baumstruktur anzeigen. Das ist also Ihr Problem.

Eine schnelle und zuverlässige Möglichkeit besteht darin, mithilfe eines PowerShell-Skripts alle Anwendungen abzurufen, zu testen, ob der physische Pfad noch vorhanden ist, und die Anwendung zu löschen, wenn dies nicht der Fall ist:

# 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
}
Ronald
quelle
Nur eine kleine Korrektur: Der IIS-Manager kann die Phantomanwendungen anzeigen, indem er den Knoten "Anwendungspools" oder "Sites" und "Anwendungen anzeigen" in einem AppPool / einer Site auswählt. Es erlaubt jedoch nur das Löschen vom 'Sites'-Knoten!
Ronald
Dies funktionierte perfekt für mich, obwohl ich auf Server 2012 R2 "Add-PSSnapIn" in "Import-Module" ändern musste.
ldam
1

Es gibt eine einfache Möglichkeit, dies zu beheben.

  1. Wählen Sie die Site mit den Phantom-Anwendungen im Anwendungspool aus.
  2. Wählen Sie auf der rechten Seite im Menü "Aktion" die Option "Anwendungen anzeigen". Diese Liste sollte alle Anwendungen anzeigen, die sich auf der Site befinden, Phantom oder nicht.
  3. Sie müssen lediglich die Anwendung auswählen und im rechten Menü "Aktion" die Option "Entfernen" auswählen.
Oddvar
quelle
0

Warum nicht MetaBase.xml direkt bearbeiten? Natürlich, sichern Sie es vorher.

Oder erstellen Sie einen "temporären" Pool, verschieben Sie alle anderen Apps dorthin, entfernen Sie den ursprünglichen Pool und benennen Sie den neuen Pool (falls erforderlich) um.

Sonnig
quelle
4
Erster Grund: Da es sich um IIS7 handelt, muss ApplicationHost.config bearbeitet werden! Aber ich stimme zu, ich verstehe nicht, warum es nicht einfach ist, diese URL zuerst in einen anderen App-Pool zu legen?
TristanK
2
Danke für die Hilfe. Ich habe die URL zuerst in einen temporären Pool verschoben, und damit ist das Problem mit AppFabric behoben. Ich kann jedoch immer noch nicht sehen, wie ich die zwielichtige Anwendung entfernen kann, da Sie einen App-Pool nicht löschen können, solange es Anwendungen gibt, die ihn verwenden, und ich kann die Anwendung nicht aus dem Application-Pool löschen
Col
0

Ich habe eine Kombination aus zwei oben aufgeführten Antworten durchgeführt, da ich applicationHost.config nicht manuell basteln wollte.

Schritt 1 - Erstellen Sie einen temporären App-Pool - sagen wir "temp".

Schritt 2 - Verschieben Sie alle Phantom-Anwendungen in diesen temporären App-Pool.

Schritt 3 - Verwenden Sie PowerShell aus einer der obigen Antworten -

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!

nixisch
quelle