Iis как удалить приложение
Эта статья помогает устранить проблему, при которой сведения, связанные с сайтом IIS, не удаляются во время программного удаления сайта.
Оригинальная версия продукта: службы IIS 8.0, службы IIS 8,5
Исходный номер КБ: 3202096
Симптомы
Рассмотрим следующий сценарий.
- Вы удаляете сайт, используя вызовы или управляемые appcmd API, которые выставляются Microsoft.Web.Administration двоичными.
- Вы создаете новый сайт в службы IIS (IIS) 7.5 или более поздних версиях.
- На новом сайте по-прежнему используются устаревшие метаданные удаленного сайта.
Причина
Проблема возникает, когда операция удаления существующего веб-сайта в IIS выполняется программным образом с помощью или API, и если сайт имеет устаревшие свойства, определенные в элементе конфигурации ApplicationHost.config файла appcmd Microsoft.Web.Administration <CustomMetaData> iiS-сервера. Сведения в теге, который имеет отношение к сайту, не <CustomMetaData> удаляются в этом сценарии. Если новый сайт с таким же ИД создается после операции удаления, этот новый сайт будет связан с устаревшими свойствами старого сайта.
Решение
Консоль администрирования IIS можно использовать для удаления веб-сайта, а не для звонков appcmd или Microsoft.Web.Administration . Этот метод позволяет убедиться, что если существуют настраиваемые устаревшие свойства, связанные с веб-сайтом, который вы пытаетесь удалить, они также будут удалены из файла конфигурации IIS (ApplicationHost.config). Это предотвратит неожиданное связывать эти свойства с новым веб-сайтом, который создается на том же сервере, который повторно будет использовать ID старого удаленного сайта.
Если по какой-либо причине необходимо удалить сайт программным путем и не использовать консоль диспетчера IIS, можно добавить один из двух обходных вариантов, чтобы убедиться, что сведения о устаревших свойствах, связанных с сайтом через элемент, также <CustomMetaData> будут удалены.
Обход 1. Использование команд appcmd
Если вы используете appcmd для удаления сайта, вы можете выполнить следующую команду, чтобы удалить все устаревшие свойства, которые сайт мог иметь в конфигурации IIS:
Замените параметр идентификатором только что удаленного сайта с помощью команд <SiteID> appcmd.
Обход 2. Использование вызовов в Microsoft.Web.Administration
Если вы используете управляемые вызовы API для удаления веб-сайта, вы можете добавить следующий код после удаления веб-сайта, чтобы также очистить устаревшие свойства, содержащиеся в элементе Microsoft.Web.Administration <CustomMetaData> конфигурации IIS:
Переменная site представляет веб-сайт, который вы только что удалили с помощью Microsoft.Web.Administration API.
Действия для воспроизведения
На Windows 2008 R2 / IIS 7.5 или Windows 2012 R2 / IIS 8.5 Server:
Установите функцию совместимости с метабазами IIS 6.
В диспетчере IIS создайте второй веб-сайт: позвоните этому веб-тесту и запустите его в любом пуле приложений.
Откройте строку командной строки и перейдите к: C:\inetpub\AdminScripts .
Введите следующую команду: adsutil.vbs SET w3svc/2/ServerSize "23" .
Это добавит следующий раздел в тег W3SVC вApplicationHost.config файле:
Теперь перейдите к C:\windows\system32\inetsrv\ внутренней командной подсказке.
У меня есть приложение в одном из моих пулов приложений, у которого есть виртуальный путь '/Site/login.aspx'. Я хочу удалить его, но он больше не существует на моем компьютере, и это вызывает у меня проблемы с настройкой AppFabric.
Я понимаю, что вы можете удалить эти фантомные приложения, воссоздав приложение в IIS, а затем нажав Remove. Это избавит приложение от пула, но в этом случае я не могу воссоздать приложение из-за /login.aspx в виртуальном пути
Любые идеи, как удалить эту ошибочную запись?
Поскольку у меня была такая же проблема; пулы приложений с приложениями, которые больше не существовали, я провел некоторое исследование и, наконец, смог решить проблему.
Вот несколько шагов:
- Найдите и отредактируйте конфигурационный файл IIS 7 «applicationHost.config» с помощью текстового редактора. Он должен храниться в « C: \ windows \ system32 \ inetsrv \ config ». Поскольку папка каким-то образом «защищена», я обычно редактирую, как показано ниже:
- Откройте проводник Windows
- Перейдите к разделу «C: \ windows \ system32 \ inetsrv \ config»
- Скопируйте файл "applicationHost.config"
- Вставьте его в папку, в которую вы можете ее отредактировать, например. ваш рабочий стол
- Откройте его с помощью своего редактора и отредактируйте его
- Скопируйте его с помощью проводника Windows на «C: \ windows \ system32 \ inetsrv \ config»
Это сработало для меня, если оно не работает для вас, пожалуйста, разместите здесь комментарий. Хорошая помощь была публикация на форуме IIS .
Это, вероятно, безопаснее и проще, чем редактирование applicationHost.config.
- Показать устаревшее приложение X и запомнить (старый) путь Y
- Создайте (старый) путь /папку Y с помощью проводника
- Обновить консоль управления IIS
- Вы найдете только что созданную папку Y и назначенное приложение X
- Щелкните правой кнопкой мыши (старое) приложение X и выберите «Удалить»
- Удалить путь Y с помощью проводника
- Еще раз обновить консоль управления IIS.
- Hurray
Решения для детей не удаляются автоматически, и диспетчер IIS не может отображать их в дереве, так что это ваша проблема .
Быстрый и надежный способ - использовать скрипт PowerShell для получения всех приложений, проверить, существует ли физический путь, а если нет, удалите приложение:
- Выберите сайт с приложениями Phantom в пуле приложений.
- В правой части меню «Действие» выберите «Просмотреть приложения». В этом списке должны отображаться все приложения, которые находятся на сайте, Phantom или нет.
- Все, что вам нужно сделать, это выбрать приложение и выбрать «Удалить» в правом меню «Действие».
Почему бы не отредактировать MetaBase.xml напрямую? Конечно, сделайте резервную копию до этого.
Или создайте пул «temp», переместите туда все другие приложения, удалите пул источников и переименуйте (если необходимо) новый пул.
Можно удалить приложение на веб-узле, если оно больше не будет использоваться. Например, нужно использовать новое приложение вместо старого.
Примечание
Единственное приложение, которое не может быть удалено с узла, – это основное приложение.
Сведения об уровнях, на которых можно выполнить эту процедуру, а также о модулях, обработчиках и разрешениях, требуемых для выполнения этой процедуры, см. в разделе IIS 7.0: Требования к функциям приложений.
Добавлять и изменять приложения могут только администраторы сервера.
Эту процедуру можно выполнить с помощью пользовательского интерфейса, запустив команды Appcmd.exe в окне командной строки, путем прямого изменения файлов конфигурации или посредством написания сценариев WMI.
Пользовательский интерфейс
Откройте службы Диспетчер IIS. Сведения об открытии Диспетчер IIS см. в разделе IIS 7.0: Открытие диспетчера IIS.
На панели Подключенияразверните узелУзлыи щелкните, чтобы выделить, узел, на котором работают приложения.
На панели Действиянажмите кнопкуПросмотреть приложения.
На странице компонента Приложениявыберите приложение из списка, а затем нажмите кнопкуУдалитьна панелиДействия.
Примечание
Удаление приложения в службах IIS не приводит к удалению физического содержимого из файловой системы Windows; удаляется лишь представление этого содержимого как приложения на узле.
Командная строка
Чтобы удалить приложение, используйте следующий синтаксис:
appcmd delete app /app.name: строка
Переменная app.nameстрокаявляется виртуальным путем к приложению, которое следует удалить.
Например, чтобы удалить приложение с именем Marketingна узлеcontoso, введите в командной строке следующую команду и нажмите клавишу ВВОД.
appcmd delete app /app.name: contoso / marketing
Дополнительные сведения о команде Appcmd.exe см. в разделе IIS 7.0: Appcmd.exe.
Настройка конфигурации
Процедура, приведенная в этом разделе, влияет на следующие элементы конфигурации:
<virtualDirectory> элемент под <application>
Дополнительные сведения о конфигурации IIS 7 см. на веб-странице IIS 7.0: IIS Settings Schemaна веб-узле MSDN (может быть на английском языке).
Чтобы выполнить эту процедуру, используйте следующие классы, методы или свойства WMI:
Метод Application.Delete_
Примечание
Чтобы удалить экземпляр этого объекта, используйте системный метод Delete_объекта, наследуемый от WMI. Дополнительные сведения оDelete_см. в описанииSWbemObject.Delete_на узле MSDN (может быть на английском языке).
Дополнительные сведения о WMI и службах IIS см. в разделе IIS 7.0. Инструментарий управления Windows (WMI). Дополнительные сведения о классах, методах и свойствах, связанных с этой процедурой, см. на страницеIIS 7.0: IIS WMI Provider Referenceна веб-узле MSDN (может быть на английском языке).
Iis 7.0: Изменение физического пути для содержимого приложения
При перемещении содержимого приложения в файловой системе необходимо обновить физический путь в службах IIS, чтобы пользователи могли получить доступ к приложению из сети Интернет.
Сведения об уровнях, на которых можно выполнить эту процедуру, а также о модулях, обработчиках и разрешениях, требуемых для выполнения этой процедуры, см. в разделе IIS 7.0: Требования к функциям приложений.
Добавлять и изменять приложения могут только администраторы сервера.
Эту процедуру можно выполнить с помощью пользовательского интерфейса, запустив команды Appcmd.exe в окне командной строки, путем прямого изменения файлов конфигурации или посредством написания сценариев WMI.
Пользовательский интерфейс
Откройте службы Диспетчер IIS. Сведения об открытии Диспетчер IIS см. в разделе IIS 7.0: Открытие диспетчера IIS.
На панели Подключенияразверните узелУзлыи щелкните, чтобы выделить, узел, на котором работают приложения.
На панели Действиянажмите кнопкуПросмотреть приложения.
На странице компонента Приложениявыберите приложение из списка и щелкнитеОсновные настройкина панелиДействия.
В поле Физический путьизмените путь к содержимому приложения.
Командная строка
Чтобы изменить путь к содержимому приложения, используйте следующий синтаксис:
appcmd set app /app.name: строка /[path='/'].physicalPath: строка
Переменная app.nameстрокаявляется виртуальным путем приложения, а переменнаяphysicalPathстрока– физическим путем к содержимому приложения.
Например, чтобы изменить физический путь местоположения c:\приложениедля приложения с именемmarketingна узлеcontoso, введите в командной строке приведенную ниже команду и нажмите клавишу ВВОД.
appcmd set app /app.name: contoso / marketing /[path='/'].physicalPath:c:\ приложение
Дополнительные сведения о команде Appcmd.exe см. в разделе IIS 7.0: Appcmd.exe.
Настройка конфигурации
Процедура, приведенная в этом разделе, влияет на следующие элементы конфигурации:
<virtualDirectory>элемент под<application>
Дополнительные сведения о конфигурации IIS 7 см. на веб-странице IIS 7.0: IIS Settings Schemaна веб-узле MSDN (может быть на английском языке).
Чтобы выполнить эту процедуру, используйте следующие классы, методы или свойства WMI:
Класс ApplicationContainsVirtualDirectory
Свойство VirtualDirectory.PhysicalPath
Дополнительные сведения о WMI и службах IIS см. в разделе IIS 7.0. Инструментарий управления Windows (WMI). Дополнительные сведения о классах, методах и свойствах, связанных с этой процедурой, см. на страницеIIS 7.0: IIS WMI Provider Referenceна веб-узле MSDN (может быть на английском языке).
См. также: IIS 7.0: Управление приложениями в IIS 7.0
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
У меня есть приложение в одном из моих пулов приложений с виртуальным путем «/Site/login.aspx». Я хочу удалить его, но он больше не существует на моем компьютере, и это вызывает у меня проблемы с настройкой AppFabric.
Я понимаю, что вы можете удалить эти фантомные приложения, заново создав приложение в IIS, а затем нажав Удалить. Это избавит приложение от пула, но в этом случае я не могу восстановить приложение из-за /login.aspx в виртуальном пути
Любые идеи, как я могу удалить эту ошибочную запись?
Так как у меня была та же проблема; пулы приложений с приложениями, которых больше не существует, я провел некоторое исследование и, наконец, смог решить проблему.
Вот несколько шагов:
- Найдите и отредактируйте файл конфигурации IIS 7 «applicationHost.config» с помощью текстового редактора. Он должен храниться в « C: \ windows \ system32 \ inetsrv \ config ». Поскольку папка каким-то образом «защищена», я обычно редактирую так:
- Откройте проводник Windows
- Перейдите к «C: \ windows \ system32 \ inetsrv \ config»
- Скопируйте файл applicationHost.config
- Вставьте его в папку, где вы можете редактировать его, например, на рабочий стол
- Откройте его с помощью редактора выбора и отредактируйте его
- Скопируйте его обратно с помощью проводника Windows в «C: \ windows \ system32 \ inetsrv \ config»
Это работает для меня, если это не работает для вас, пожалуйста, оставьте комментарий здесь. Хорошей помощью была эта публикация на форуме IIS .
Кроме того, я наткнулся на эту статью. Я не использовал его, так как решение, приведенное выше, сработало для меня. Охота на зомби - Как удалить осиротевшие веб-приложения iis Подход Powershell в ссылке в комментарии @ Col выше - это чистое решение, и оно прекрасно работает.Это, вероятно, безопаснее и проще, чем редактирование applicationHost.config.
- Просмотрите устаревшее приложение X и запомните (старый) путь Y
- Создайте (старый) путь / папку Y с помощью Проводника
- Обновить консоль управления IIS
- Вы найдете только что созданную папку Y и назначенное приложение X
- Щелкните правой кнопкой мыши (старое) приложение X и выберите «Удалить».
- Удалить путь Y с помощью Проводника
- Снова обновите консоль управления IIS
- Ура
Дочерние приложения не удаляются автоматически, и диспетчер IIS не может отобразить их в дереве, так что это ваша проблема .
Быстрый и надежный способ - использовать сценарий PowerShell для получения всех приложений, проверить, существует ли еще физический путь и, если нет, удалить приложение:
Читайте также: