Проблема/вопрос
Я тестирую скрипт для развертывания Redgate. На последнем шаге он запускает веб-сайт:
import-module WebAdministration
$website = get-website | where-object { $_.name -eq $RedGateWebSiteName }
#(re)write HostName#
$binding = Get-WebBinding -Name $RedGateWebSiteName
Set-WebBinding -Name $RedGateWebSiteName -BindingInformation "*:80:*" -PropertyName HostHeader -Value $HostName
if ($website) {
Start-Website "$RedGateWebSiteName"
}
Это всегда работало, но теперь в один из последних дней я получаю эту ошибку
At D:\inetpub\Timeblockr-RedGate\Api\PostDeploy.ps1:15 char:15
+ Start-Website <<<< "$RedGateWebSiteName"
+ CategoryInfo : InvalidOperation: (:) [Start-Website], COMException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.IIs.PowerShell.Provider.StartWebsiteCommand
ошибка IIS
The World Wide Web Publishing Service (WWW Service) did not register the URL prefix http://*:80/ for site 3. The necessary network binding may already be in use. The site has been disabled. The data field contains the error number.
Этот вопрос SO Не удается создать ошибку файла при запуске команды Start-Website в Powershell дает довольно хорошее представление о том, что это может быть.
Изменить:
После просмотра моего журнала событий и проверки ответов я обнаружил, что когда Redgate автоматически пытается установить/запустить веб-сайт, я получаю эту ошибку IIS:
The World Wide Web Publishing Service (WWW Service) did not register the URL prefix http://*:80/ for site 3. The necessary network binding may already be in use. The site has been disabled. The data field contains the error number.
В этой ошибке сервера: https://serverfault.com/questions/456217/the-world-wide-web-publishing-service-www-service-did-not-register-the-url кто-то упомянул, что причиной этого является то, что Веб-сайт IIS создается без заголовка хоста. Я добавляю hostheader после того, как пытаюсь запустить сайт. Давайте найдем решение
Редактировать 2: я добавлял имя хоста после того, как пытался запустить веб-сайт. Это привело к тому, что веб-сайт имеет пустое имя хоста и конфликтует с IIS. (или где-то еще). Я изменил свой сценарий, чтобы получить веб-сайт, добавить имя хоста и затем запустить веб-сайт. Также добавлено "$RedgateWebsiteName"
вместо $RedGateWebSiteName.
Теперь работает отлично!
Редактировать 3: После запуска тестов я, похоже, получил ту же ошибку. У одного деплоя нет проблем, у другого деплоя есть.
Редактировать 4: я обновил скрипт / Error / Post. Я удалил свой сайт из IIS после того, как нажал «Установить». Отлично установлен - Никаких проблем, автоматический запуск. Второй запуск точно такой же, третий запуск я получаю вышеописанную ошибку!