Rimozione di applicazioni fantasma dai pool di applicazioni in IIS7


38

Ho un'applicazione in uno dei miei pool di applicazioni che ha un percorso virtuale di '/Site/login.aspx'. Voglio rimuoverlo ma non esiste più sul mio computer e mi sta causando problemi durante la configurazione di AppFabric.

Comprendo che è possibile rimuovere queste applicazioni fantasma ricreando l'applicazione in IIS e quindi premendo Rimuovi. Questo eliminerà l'applicazione dal pool ma in questo caso non riesco a ricreare l'applicazione a causa di /login.aspx nel percorso virtuale

Qualche idea su come rimuovo questa voce errata?

Grazie

Risposte:


44

Da quando ho avuto lo stesso problema; pool di applicazioni con applicazioni che non esistevano più, ho fatto qualche ricerca e alla fine sono riuscito a risolvere il problema.

Ecco alcuni passaggi:

  1. Individua e modifica il file di configurazione di IIS 7 "applicationHost.config" con un editor di testo. Dovrebbe essere archiviato in " C: \ windows \ system32 \ inetsrv \ config " Dato che la cartella è in qualche modo "protetta", di solito modifico come segue:
    1. Apri Esplora risorse
    2. Passare a "C: \ windows \ system32 \ inetsrv \ config"
    3. Copia il file "applicationHost.config"
    4. Incollalo in una cartella in cui puoi modificarlo, ad esempio il tuo desktop
    5. Aprilo con il tuo editor di scelta e modificalo
    6. Copiarlo nuovamente con Esplora risorse in "C: \ windows \ system32 \ inetsrv \ config"
  2. Fai un backup del tuo file "applicationHost.config"!
  3. Cerca con un editor di testo in "applicationHost.config" le tue applicazioni inesistenti. Dovrebbero trovarsi da qualche parte all'interno di un <application ...>nodo XML.
  4. Elimina i <application ...>nodi di tutte le tue applicazioni fantasma.
  5. Salvare il file e copiarlo nuovamente in "C: \ windows \ system32 \ inetsrv \ config"
  6. Aggiorna la console di gestione IIS. I pool di applicazioni ora dovrebbero essere senza le applicazioni fantasma precedentemente eliminate.
  7. Rimuovere effettivamente il pool di applicazioni ora vuoto.

Ha funzionato per me, se non funziona per te, pubblica un commento qui. Un buon aiuto è stato questo post sul forum IIS .


6
Inoltre, mi sono imbattuto in questo articolo. Non l'ho usato perché la soluzione sopra ha funzionato per me Hunting Zombies - Come rimuovere le applicazioni web orfane di iis
Col

1
L'approccio Powershell nel link nel commento di @ Col sopra è una soluzione pulita e funziona benissimo.
Ricetta il

4

Questo è probabilmente più sicuro e più semplice della modifica di 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
Ciò rimuove i pool di applicazioni . Per rimuovere le applicazioni (fantasma), utilizzare l'approccio dall'articolo collegato in serverfault.com/questions/283467/…
bvgheluwe

1

Molto più semplice:

  1. Visualizza l'applicazione non aggiornata X e ricorda il (vecchio) percorso Y
  2. Crea il (vecchio) percorso / cartella Y con Explorer
  3. Aggiorna la console di gestione IIS
  4. Troverai la cartella Y appena creata e l'applicazione X assegnata
  5. Fai clic destro sulla (vecchia) applicazione X e scegli "Rimuovi"
  6. Rimuovere il percorso Y con Explorer
  7. Aggiorna di nuovo IIS Management Console
  8. evviva

1

Le applicazioni figlio non vengono eliminate automaticamente e Gestione IIS non può visualizzarle nella struttura, quindi questo è il tuo problema ...

Un modo rapido e affidabile è utilizzare uno script PowerShell per ottenere tutte le applicazioni, verificare se il percorso fisico esiste ancora e, in caso contrario, eliminare l'applicazione:

# 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
}

Solo una piccola correzione: IIS Manager può visualizzare le applicazioni fantasma selezionando il nodo "Pool di applicazioni" o "Siti" e selezionando "Visualizza applicazioni" su un appPool / sito. Tuttavia, consente solo l'eliminazione dal nodo "Siti"!
Ronald

Questo ha funzionato perfettamente per me, anche se ho dovuto modificare "Add-PSSnapIn" in "Import-Module" su Server 2012 R2.
ldam,

1

C'è un modo semplice per risolvere questo problema.

  1. Seleziona il sito con le applicazioni Phantom nel pool di applicazioni.
  2. Sul lato destro del menu "Azione" selezionare "Visualizza applicazioni". Questo elenco dovrebbe mostrare tutte le applicazioni presenti nel sito, Phantom o meno.
  3. Tutto quello che devi fare è selezionare l'applicazione e selezionare "Rimuovi" nel menu "Azione" giusto.

0

Perché non modificare direttamente MetaBase.xml? Naturalmente, esegui il backup prima di quello.

Oppure crea un pool "temporaneo", sposta lì tutte le altre app, rimuovi il pool orig e rinomina (se necessario) il nuovo pool.


4
Primo motivo: perché è IIS7, quindi è necessario modificare ApplicationHost.config! Ma sono d'accordo, non capisco perché non sia solo "inserire prima quell'URL in un pool di app diverso"?
TristanK,

2
Grazie per l'aiuto. Prima avevo spostato l'URL in un pool temporaneo e questo rimuove il problema con AppFabric. Tuttavia, non riesco ancora a vedere come posso rimuovere l'applicazione dannosa in quanto non è possibile eliminare un pool di app purché abbia applicazioni che lo utilizzano e non posso eliminare l'applicazione dal pool di applicazioni
Col

0

Ho fatto una combinazione di due risposte sopra elencate poiché non volevo armeggiare manualmente applicationHost.config.

Passaggio 1: crea un pool di app temporaneo, ad esempio "temp".

Passaggio 2: spostare tutte le applicazioni fantasma in questo pool di app temporanee.

Passaggio 3: utilizzare Powershell da una delle risposte sopra riportate:

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]  

Ecco!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.