Usuwanie aplikacji fantomowych z pul aplikacji w IIS7

38

Mam aplikację w jednej z moich pul aplikacji, która ma wirtualną ścieżkę „/Site/login.aspx”. Chcę go usunąć, ale nie ma go już na moim komputerze i powoduje to problemy z konfiguracją AppFabric.

Rozumiem, że możesz usunąć te fantomowe aplikacje, odtwarzając je ponownie w IIS, a następnie naciskając Usuń. Spowoduje to usunięcie aplikacji z puli, ale w tym przypadku nie mogę odtworzyć aplikacji z powodu pliku /login.aspx na ścieżce wirtualnej

Jakieś pomysły, jak usunąć ten błędny wpis?

Dzięki

Przełęcz
źródło

Odpowiedzi:

44

Ponieważ miałem ten sam problem; pule aplikacji z aplikacjami, które już nie istniały, przeprowadziłem badania i wreszcie udało mi się rozwiązać problem.

Oto kilka kroków:

  1. Znajdź i edytuj plik konfiguracyjny IIS 7 „applicationHost.config” za pomocą edytora tekstu. Powinien być przechowywany w „ C: \ windows \ system32 \ inetsrv \ config ” Ponieważ folder jest w jakiś sposób „chroniony”, zwykle edytuję w następujący sposób:
    1. Otwórz Eksploratora Windows
    2. Przejdź do „C: \ windows \ system32 \ inetsrv \ config”
    3. Skopiuj plik „applicationHost.config”
    4. Wklej go do folderu, w którym możesz go edytować, np. Na pulpicie
    5. Otwórz go za pomocą edytora wyboru i edytuj
    6. Skopiuj go z powrotem za pomocą Eksploratora Windows do „C: \ windows \ system32 \ inetsrv \ config”
  2. Wykonaj kopię zapasową pliku „applicationHost.config”!
  3. Wyszukaj za pomocą edytora tekstu w „applicationHost.config” swoich nieistniejących aplikacji. Powinny one znajdować się gdzieś w <application ...>węźle XML.
  4. Usuń <application ...>węzły z wszystkich aplikacji fantomowych.
  5. Zapisz plik i skopiuj go z powrotem do „C: \ windows \ system32 \ inetsrv \ config”
  6. Odśwież konsolę zarządzania IIS. W pulach aplikacji powinny znajdować się teraz aplikacje fantomowe, które wcześniej usunąłeś.
  7. Właściwie usuń teraz pustą pulę aplikacji.

To działało dla mnie, jeśli to nie działa dla Ciebie, napisz tutaj komentarz. Dobrą pomocą było to opublikowanie na forum IIS .

Uwe Keim
źródło
6
Ponadto natknąłem się na ten artykuł. Nie użyłem go, ponieważ powyższe rozwiązanie działało dla mnie Polowanie na zombie - Jak usunąć osierocone aplikacje internetowe iS
Col
1
Podejście Powershell w linku w komentarzu @ Col powyżej jest czystym rozwiązaniem i działa świetnie.
Recep
4

Jest to prawdopodobnie bezpieczniejsze i prostsze niż edycja 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
źródło
1
To usuwa pule aplikacji . Aby usunąć (fantomowe) aplikacje, skorzystaj z podejścia z artykułu pod
adresem
1

O wiele prostsze:

  1. Wyświetl nieaktualną aplikację X i zapamiętaj (starą) ścieżkę Y
  2. Utwórz (starą) ścieżkę / folder Y za pomocą Eksploratora
  3. Odśwież konsolę zarządzania IIS
  4. Znajdziesz właśnie utworzony folder Y i przypisaną aplikację X
  5. Kliknij prawym przyciskiem (starą) aplikację X i wybierz „Usuń”
  6. Usuń ścieżkę Y za pomocą Eksploratora
  7. Odśwież konsolę zarządzania IIS ponownie
  8. Hurra
Mathias Sch.
źródło
1

Aplikacje potomne nie są automatycznie usuwane, a Menedżer usług IIS nie może wyświetlić ich w drzewie, więc to jest twój problem ...

Szybkim i niezawodnym sposobem jest użycie skryptu PowerShell do pobrania wszystkich aplikacji, przetestowanie, czy ścieżka fizyczna nadal istnieje, a jeśli nie, usunięcie aplikacji:

# 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
źródło
Mała korekta: Menedżer usług IIS może wyświetlić aplikacje fantomowe, wybierając węzeł „Pule aplikacji” lub „Witryny” i wybierając opcję „Przeglądaj aplikacje” w puli aplikacji / witrynie. Pozwala to jednak tylko na usunięcie z węzła „Strony”!
Ronald
Działa to dla mnie idealnie, chociaż musiałem zmienić „Add-PSSnapIn” na „Import-Module” na Server 2012 R2.
dam
1

Istnieje prosty sposób, aby to naprawić.

  1. Wybierz witrynę z aplikacjami Phantom w puli aplikacji.
  2. Po prawej stronie menu „Akcja” wybierz „Przeglądaj aplikacje”. Ta lista powinna pokazywać wszystkie aplikacje znajdujące się na stronie, Phantom lub nie.
  3. Wszystko, co musisz zrobić, to wybrać aplikację i wybrać „Usuń” w prawym menu „Akcja”.
Oddvar
źródło
0

Dlaczego nie edytować bezpośrednio pliku MetaBase.xml? Oczywiście, cofnij to wcześniej.

Lub utwórz pulę „tymczasową”, przenieś tam wszystkie inne aplikacje, usuń pulę oryginalną i zmień nazwę (jeśli to konieczne) nowej puli.

Słoneczny
źródło
4
Pierwszy powód: ponieważ jest to IIS7, więc wymagana jest edycja ApplicationHost.config! Ale zgadzam się, nie rozumiem, dlaczego nie chodzi tylko o „najpierw kliknięcie tego adresu URL w innej puli aplikacji”?
TristanK
2
Dzięki za pomoc. Najpierw przeniosłem adres URL do puli tymczasowej, co usuwa problem z AppFabric. Jednak nadal nie widzę, jak mogę usunąć podejrzaną aplikację, ponieważ nie można usunąć puli aplikacji, o ile tylko aplikacje ją wykorzystują, i nie mogę usunąć aplikacji z puli aplikacji
Col
0

Zrobiłem kombinację dwóch odpowiedzi wymienionych powyżej, ponieważ nie chciałem majsterkować ręcznie applicationHost.config.

Krok 1 - Utwórz tymczasową pulę aplikacji - powiedzmy „temp”.

Krok 2 - Przenieś wszystkie aplikacje fantomowe do tej tymczasowej puli aplikacji.

Krok 3 - Użyj PowerShell z jednej z powyższych odpowiedzi -

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
źródło