IIS не может запустить пул приложений - с помощью DFS, Shared Config и Microsoft.Web.Administration

Развертываю сайты с помощью Microsoft.Web.Administration на C #. Я выполняю развертывание на одном сервере, и с помощью DFS и общей конфигурации IIS могу распространять свои изменения на другие серверы, которые находятся за балансировщиком нагрузки.

Некоторое время все работало нормально, а затем у меня начались проблемы. На сервере, с которым код общается, это нормально, но на других серверах пул приложений не запускается либо автоматически как часть развертывания кода, либо вручную, переходя на каждый сервер и нажимая кнопку «Пуск» в консоли.

Идентификатор объекта не соответствует действительному объекту.

Текущий обходной путь для меня - открыть пул приложений в консоли (двойной щелчок), а затем нажать ОК, ничего не делая, а затем я могу запустить его, и сайт заработает.

Обратите внимание, что если я создаю пул приложений вручную на любом из серверов, такая же проблема возникает на других, поэтому я не считаю, что это проблема кода со стороны развертывания.

Если посмотреть на общий файл конфигурации, который реплицируется, в нем нет никаких изменений до и после выполнения операций открытия и закрытия в пуле приложений.

В журнале событий нет сообщений, которые оказались бы полезными, и при моем поиске в сети я нашел только одного человека, говорящего о чем-то похожем, и эта тема осталась нерешенной. Сообщение об ошибке расплывчато, и поиск по нему возвращает все виды вещей, ни один из которых я не испытываю.

Это на Windows Server 2012, IIS 8.5

Публикация впервые, поэтому, если я что-то пропустил или что-то еще, я ценю обратную связь, спасибо.


person DJ Donga    schedule 07.01.2016    source источник
comment
Кажется, нет явного заявления о том, что общая конфигурация работает для DFS. Вы можете связаться со службой поддержки Microsoft через support.microsoft.com.   -  person Lex Li    schedule 07.01.2016
comment
Спасибо за предложение, единственное, у меня он работал нормально, пока не было развернуто около 500 сайтов. Я также свяжусь с ними, но надеюсь, что у кого-то может быть аналогичная проблема, и он может помочь.   -  person DJ Donga    schedule 07.01.2016


Ответы (1)


Этот код решает проблему, надеюсь, это может кому-то помочь.

$sites = Get-Website | where {$_.state -eq $null}
$sites | ForEach-Object {
    $siteName = $_.name
    $appPoolName = $_.applicationPool
    IF (($siteName -ne $NULL) -and ($appPoolName -ne $NULL)){ 
        Set-ItemProperty "IIS:\Sites\$siteName" ApplicationPool $appPoolName
    }
}
person DJ Donga    schedule 31.05.2017