Eliminar aplicaciones fantasmas de grupos de aplicaciones en IIS7

38

Tengo una aplicación en uno de mis grupos de aplicaciones que tiene una ruta virtual de '/Site/login.aspx'. Quiero eliminarlo, pero ya no existe en mi computadora y me está causando problemas al configurar AppFabric.

Entiendo que puede eliminar estas aplicaciones fantasmas recreando la aplicación en IIS y luego presionando Eliminar. Eso eliminará la aplicación del grupo, pero en este caso no puedo volver a crear la aplicación debido a /login.aspx en la ruta virtual

¿Alguna idea de cómo elimino esta entrada errónea?

Gracias

Columna
fuente

Respuestas:

44

Como tuve el mismo problema; grupos de aplicaciones con aplicaciones que ya no existían, investigué un poco y finalmente pude resolver el problema.

Aquí hay algunos pasos:

  1. Localice y edite su archivo de configuración de IIS 7 "applicationHost.config" con un editor de texto. Debe almacenarse en " C: \ windows \ system32 \ inetsrv \ config " Dado que la carpeta está de alguna manera "protegida", generalmente edito de la siguiente manera:
    1. Abra el Explorador de Windows
    2. Vaya a "C: \ windows \ system32 \ inetsrv \ config"
    3. Copie el archivo "applicationHost.config"
    4. Péguelo en una carpeta donde pueda editarlo, por ejemplo, su escritorio
    5. Ábrelo con tu editor de choise y edítalo
    6. Copie de nuevo con el Explorador de Windows a "C: \ windows \ system32 \ inetsrv \ config"
  2. ¡Haga una copia de seguridad de su archivo "applicationHost.config"!
  3. Busque con un editor de texto en su "applicationHost.config" para sus aplicaciones no existentes. Deben ubicarse en algún lugar dentro de un <application ...>nodo XML.
  4. Elimine los <application ...>nodos de todas sus aplicaciones fantasmas.
  5. Guarde el archivo y cópielo nuevamente en "C: \ windows \ system32 \ inetsrv \ config"
  6. Actualice la consola de administración de IIS. Sus grupos de aplicaciones ahora deberían estar sin las aplicaciones fantasmas que eliminó anteriormente.
  7. En realidad, elimine el grupo de aplicaciones ahora vacío.

Eso funcionó para mí, si no funciona para usted, publique un comentario aquí. Una buena ayuda fue esta publicación en el foro de IIS .

Uwe Keim
fuente
66
Además, me encontré con este artículo. No lo utilicé porque la solución anterior funcionó para mí Hunting Zombies - Cómo eliminar las aplicaciones web huérfanas de iis
Col
1
El enfoque de Powershell en el enlace en el comentario de @ Col anterior es una solución limpia y funciona muy bien.
Recep
4

Esto es probablemente más seguro y sencillo que editar 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
fuente
1
Esto elimina los grupos de aplicaciones . Para eliminar aplicaciones (fantasmas), utilice el enfoque del artículo vinculado en serverfault.com/questions/283467/…
bvgheluwe
1

Mucho más simple:

  1. Vea la aplicación obsoleta X y recuerde la ruta (antigua) Y
  2. Cree la ruta / carpeta (antigua) Y con Explorer
  3. Actualizar la consola de administración de IIS
  4. Encontrará la carpeta recién creada Y y la aplicación asignada X
  5. Haga clic derecho en la aplicación (antigua) X y elija "Eliminar"
  6. Eliminar ruta Y con Explorer
  7. Actualizar IIS Management Console nuevamente
  8. Hurra
Mathias Sch.
fuente
1

Las aplicaciones secundarias no se eliminan automáticamente y el Administrador de IIS no puede mostrarlas en el árbol, así que ese es su problema ...

Una forma rápida y robusta es utilizar un script de PowerShell para obtener todas las aplicaciones, probar si la ruta física aún existe y, de lo contrario, eliminar la aplicación:

# 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
fuente
Solo una pequeña corrección: IIS Manager puede mostrar las aplicaciones fantasma seleccionando el nodo 'Grupos de aplicaciones' o 'Sitios' y seleccionando 'Ver aplicaciones' en un grupo de aplicaciones / sitio. Sin embargo, solo permite eliminar del nodo 'Sitios'.
Ronald
Esto funcionó perfectamente para mí, aunque tuve que cambiar "Add-PSSnapIn" a "Import-Module" en Server 2012 R2.
señora
1

Hay una manera fácil de arreglar esto.

  1. Seleccione el sitio con las aplicaciones Phantom en el grupo de aplicaciones.
  2. En el lado derecho del menú "Acción", seleccione "Ver aplicaciones". Esta lista debe mostrar todas las aplicaciones que están en el sitio, Phantom o no.
  3. Todo lo que necesita hacer es seleccionar la Aplicación y seleccionar "Eliminar" en el menú "Acción" de la derecha.
Oddvar
fuente
0

¿Por qué no editar MetaBase.xml directamente? Por supuesto, haz una copia de seguridad antes de eso.

O cree un grupo "temporal", mueva todas las demás aplicaciones allí, elimine el grupo original y cambie el nombre (si es necesario) del nuevo grupo.

Soleado
fuente
44
Primera razón: debido a que es IIS7, ¡se requiere editar ApplicationHost.config! Pero estoy de acuerdo, no entiendo por qué no es solo "poner esa URL en un grupo de aplicaciones diferente primero".
TristanK
2
Gracias por la ayuda. Primero moví la URL a un grupo temporal y eso elimina el problema con AppFabric. Sin embargo, todavía no puedo ver cómo puedo eliminar la aplicación dudosa ya que no puede eliminar un grupo de aplicaciones siempre que tenga aplicaciones que lo usan, y no puedo eliminar la aplicación del grupo de aplicaciones
Col
0

Hice una combinación de dos respuestas enumeradas anteriormente ya que no quería modificar manualmente applicationHost.config.

Paso 1: cree un grupo de aplicaciones temporal: digamos "temp".

Paso 2: mueva todas las aplicaciones fantasmas a este grupo de aplicaciones temporales.

Paso 3: use Powershell de una de las respuestas anteriores:

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!

nixish
fuente