Menghapus aplikasi hantu dari Kumpulan Aplikasi di IIS7

38

Saya memiliki aplikasi di salah satu kumpulan aplikasi saya yang memiliki jalur virtual '/Situs/login.aspx'. Saya ingin menghapusnya tetapi tidak lagi ada di komputer saya dan itu menyebabkan saya masalah dalam mengatur AppFabric.

Saya mengerti bahwa Anda dapat menghapus aplikasi hantu ini dengan membuat ulang aplikasi di IIS dan kemudian menekan Hapus. Itu akan menyingkirkan aplikasi dari pool tetapi dalam kasus ini saya tidak dapat membuat ulang aplikasi karena /login.aspx di jalur virtual

Adakah ide bagaimana saya menghapus entri yang salah ini?

Terima kasih

Kol
sumber

Jawaban:

44

Karena saya memiliki masalah yang sama; kumpulan aplikasi dengan aplikasi yang sudah tidak ada lagi, saya melakukan riset dan akhirnya berhasil menyelesaikan masalah.

Berikut ini beberapa langkah:

  1. Temukan dan edit file konfigurasi IIS 7 Anda "applicationHost.config" dengan editor teks. Itu harus disimpan dalam " C: \ windows \ system32 \ inetsrv \ config " Karena foldernya entah bagaimana "dilindungi", saya biasanya mengedit seperti berikut:
    1. Buka Windows Explorer
    2. Arahkan ke "C: \ windows \ system32 \ inetsrv \ config"
    3. Salin file "applicationHost.config"
    4. Rekatkan ke folder tempat Anda dapat mengeditnya, mis. Desktop Anda
    5. Buka dengan editor pilihan Anda dan edit
    6. Salin kembali dengan Windows Explorer ke "C: \ windows \ system32 \ inetsrv \ config"
  2. Buat cadangan file "applicationHost.config" Anda!
  3. Cari dengan editor teks di "applicationHost.config" Anda untuk aplikasi yang tidak ada. Mereka harus ditempatkan di suatu tempat di dalam <application ...>simpul XML.
  4. Hapus <application ...>simpul semua aplikasi hantu Anda.
  5. Simpan file dan salin kembali ke "C: \ windows \ system32 \ inetsrv \ config"
  6. Segarkan konsol manajemen IIS. Kumpulan aplikasi Anda sekarang seharusnya tanpa aplikasi hantu yang sebelumnya Anda hapus.
  7. Sebenarnya menghapus kumpulan aplikasi yang sekarang kosong.

Itu berhasil untuk saya, jika tidak berhasil untuk Anda, silakan kirim komentar di sini. Bantuan yang baik adalah posting ini di forum IIS .

Uwe Keim
sumber
6
Selain itu, saya menemukan artikel ini. Saya tidak menggunakannya sebagai solusi di atas bekerja untuk saya Hunting Zombies - Bagaimana menghapus aplikasi web iis yatim
Col
1
Pendekatan Powershell di tautan dalam komentar @ Col di atas adalah solusi bersih dan berfungsi dengan baik.
Recep
4

Ini mungkin lebih aman dan lebih sederhana daripada mengedit 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
sumber
1
Ini menghapus kumpulan aplikasi . Untuk menghapus aplikasi (hantu), gunakan pendekatan dari artikel yang ditautkan di serverfault.com/questions/283467/…
bvgheluwe
1

Jauh lebih sederhana:

  1. Lihat aplikasi basi X dan ingat jalur (lama) Y
  2. Buat jalur / folder (lama) Y dengan Explorer
  3. Segarkan Konsol Manajemen IIS
  4. Anda akan menemukan folder yang baru dibuat Y dan aplikasi X yang ditugaskan
  5. Klik kanan pada aplikasi X (lama) dan pilih "Hapus"
  6. Hapus jalur Y dengan Explorer
  7. Segarkan kembali Konsol Manajemen IIS lagi
  8. Hore
Mathias Sch.
sumber
1

Aplikasi anak tidak secara otomatis dihapus dan IIS Manager tidak dapat menampilkannya di pohon, jadi itu masalah Anda ...

Cara cepat dan tangguh adalah dengan menggunakan skrip PowerShell untuk mendapatkan semua aplikasi, uji apakah jalur fisik masih ada dan jika tidak, hapus aplikasi:

# 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
sumber
Hanya sedikit koreksi: IIS Manager dapat menampilkan aplikasi phantom dengan memilih node 'Application pools' atau 'Sites' dan memilih 'View Applications' di appPool / situs. Namun itu hanya memungkinkan penghapusan dari simpul 'Situs'!
Ronald
Ini berfungsi dengan baik untuk saya, meskipun saya harus mengubah "Add-PSSnapIn" menjadi "Import-Module" pada Server 2012 R2.
ldam
1

Ada cara mudah untuk memperbaikinya.

  1. Pilih situs dengan aplikasi Phantom di kumpulan aplikasi.
  2. Di sebelah kanan menu "Aksi", pilih "Lihat Aplikasi". Daftar ini harus menunjukkan semua aplikasi yang ada di situs, Phantom atau tidak.
  3. Yang perlu Anda lakukan adalah memilih Aplikasi dan pilih "Hapus" di menu "Aksi" yang tepat.
Oddvar
sumber
0

Mengapa tidak mengedit MetaBase.xml secara langsung? Tentu saja, siapkan sebelum itu.

Atau buat "temp" pool, pindahkan semua aplikasi lain di sana, hapus pool orig, dan ganti nama (jika perlu) pool baru.

Cerah
sumber
4
Alasan pertama: Karena itu IIS7, jadi mengedit ApplicationHost.config diperlukan! Tapi saya setuju, saya tidak mengerti mengapa itu bukan hanya "plonk URL itu di App Pool berbeda dulu"?
TristanK
2
Terima kasih untuk bantuannya. Saya telah memindahkan URL ke kolam temp pertama dan itu tidak menghapus masalah dengan AppFabric. Namun, saya masih tidak dapat melihat bagaimana saya dapat menghapus aplikasi yang cerdik karena Anda tidak dapat menghapus kumpulan aplikasi selama aplikasi itu menggunakannya, dan saya tidak dapat menghapus aplikasi dari kumpulan aplikasi
Kol
0

Saya melakukan kombinasi dua jawaban yang tercantum di atas karena saya tidak ingin mengotak-atik applicationHost.config secara manual.

Langkah 1 - Buat kumpulan aplikasi sementara - katakanlah "temp".

Langkah 2 - Pindahkan semua aplikasi hantu ke kumpulan aplikasi temp ini.

Langkah 3 - Gunakan Powershell dari salah satu jawaban di atas -

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
sumber