Видалення фантомних програм із пулів прикладних програм у IIS7


38

У мене є додаток в одному з моїх пулів додатків, який має віртуальний шлях '/Site/login.aspx'. Я хочу його видалити, але він більше не існує на моєму комп’ютері, і це викликає у мене проблеми з налаштуванням AppFabric.

Я розумію, що ви можете видалити ці фантомні програми, відтворивши програму в IIS, а потім натисніть Видалити. Це дозволить позбутися програми з пулу, але в цьому випадку я не можу відтворити програму через /login.aspx у віртуальному шляху

Будь-які ідеї, як видалити цей помилковий запис?

Спасибі

Відповіді:


44

Так як у мене було те саме питання; пули програм із додатками, яких уже не було, я провів кілька досліджень і нарешті зумів вирішити проблему.

Ось кілька кроків:

  1. Знайдіть і відредагуйте файл конфігурації IIS 7 "applicationHost.config" за допомогою текстового редактора. Він повинен зберігатися у " C: \ windows \ system32 \ inetsrv \ config " Оскільки папка якось "захищена", я зазвичай редагую так:
    1. Відкрийте Провідник Windows
    2. Перейдіть до "C: \ windows \ system32 \ inetsrv \ config"
    3. Скопіюйте файл "applicationHost.config"
    4. Вставте його в папку, де ви можете її редагувати, наприклад, на робочий стіл
    5. Відкрийте його за допомогою обраного редактора та відредагуйте його
    6. Скопіюйте його назад із Windows Explorer у "C: \ windows \ system32 \ inetsrv \ config"
  2. Зробіть резервну копію файлу "applicationHost.config"!
  3. Шукайте за допомогою текстового редактора у програмі "applicationHost.config" неіснуючі програми. Вони повинні розташовуватися десь усередині<application ...> вузла XML.
  4. Видаліть <application ...>вузол (-ів) усіх ваших програм-фантомів.
  5. Збережіть файл і скопіюйте його назад у "C: \ windows \ system32 \ inetsrv \ config"
  6. Оновіть консоль управління IIS. Тепер ваші пули програм повинні бути без фантомних програм, які ви раніше видаляли.
  7. Фактично видаліть пустий пул додатків.

Це працювало для мене, якщо це не працює для вас, будь ласка, опублікуйте коментар тут. Гарною підмогою стала ця публікація на форумі IIS .


6
Крім того, я натрапив на цю статтю. Я не використовував це як розроблене вище рішення для мене Мисливські зомбі - Як видалити осиротілих веб-програми iis
Col

1
Підхід Пауершелла за посиланням у коментарі @ Col вище - чисте рішення, і він чудово працює.
Прийом

4

Це, мабуть, безпечніше і простіше, ніж редагування 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
Це видаляє пули програм . Для видалення (фантомних) додатків використовуйте підхід із статті, зв'язаної на сервері defaultfault.com/questions/283467/…
bvgheluwe

1

Набагато простіше:

  1. Перегляньте застаріле додаток X і запам’ятайте (старий) шлях Y
  2. Створіть (старий) шлях / папку Y за допомогою Провідника
  3. Оновіть консоль управління IIS
  4. Ви знайдете щойно створену папку Y та призначену програму X
  5. Клацніть правою кнопкою миші на (стару) програму X та виберіть "Видалити"
  6. Видаліть шлях Y за допомогою Провідника
  7. Оновіть консоль управління IIS ще раз
  8. Ура

1

Дочірні програми не видаляються автоматично, і менеджер IIS не може відобразити їх у дереві, тому це ваша проблема ...

Швидкий і надійний спосіб - використовувати скрипт PowerShell для отримання всіх програм, перевірити, чи існує фізичний шлях, і якщо ні, видалити програму:

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

Лише невелике виправлення: IIS Manager може відображати програми-фантоми, вибираючи «Пули прикладних програм» або «Сайти» та вибираючи «Перегляд програм» на appPool / сайті. Це дозволяє лише видаляти з вузла "Сайти"!
Рональд

Це прекрасно працювало для мене, хоча мені довелося змінити "Add-PSSnapIn" на "Import-Module" на сервері 2012 R2.
ldam

1

Існує простий спосіб виправити це.

  1. Виберіть сайт із програмами Phantom у пулі програм.
  2. У правій частині меню "Дія" виберіть "Переглянути програми". У цьому списку повинні бути вказані всі програми, які є на сайті, Phantom чи ні.
  3. Все, що вам потрібно зробити, це вибрати Додаток та вибрати в правій меню «Дія» «Видалити».

0

Чому б не редагувати MetaBase.xml безпосередньо? Звичайно, підкріпіть це до цього.

Або створіть пул "темп", перемістіть усі інші додатки туди, видаліть початковий пул та перейменуйте (за потреби) новий пул.


4
Перша причина: Тому що це IIS7, тому редагувати ApplicationHost.config потрібно! Але я погоджуюся, я не розумію, чому це не просто "розгортати цю URL-адресу в іншому пулі додатків"?
TristanK

2
Дякую за допомогу. Я спочатку перемістив URL-адресу в тимп-пул, і це усуне проблему з AppFabric. Однак я все ще не бачу, як я можу видалити примхливий додаток, оскільки ви не можете видалити пул додатків, якщо в ньому є додатки, і я не можу видалити програму з пулу програм
Col

0

Я зробив комбінацію двох перелічених вище відповідей, оскільки я не хотів переробляти applicationHost.config вручну.

Крок 1 - Створіть тимчасовий пул додатків - скажімо, "темп".

Крок 2 - Перемістіть усі прикладні програми до цього пулу програм temp.

Крок 3 - Використовуйте Powershell з однієї з відповідей вище -

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]  

Вуаля!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.