Powershell Start-Веб-сайт IIS

Проблема/вопрос

Я тестирую скрипт для развертывания 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 после того, как нажал «Установить». Отлично установлен - Никаких проблем, автоматический запуск. Второй запуск точно такой же, третий запуск я получаю вышеописанную ошибку!


person JochemQuery    schedule 10.01.2014    source источник
comment
Можете ли вы запустить веб-сайт через пользовательский интерфейс?   -  person David Martin    schedule 10.01.2014
comment
@DavidMartin Да, это работает отлично.   -  person JochemQuery    schedule 13.01.2014


Ответы (3)


Я предполагаю, что переменной $RedGateWebSiteName не было присвоено значение, предполагая, что сообщение журнала заменяет переменную ее значением. Судя по поиску в Google, сообщение IIS «файл уже существует» может быть ошибочным, поскольку это происходит из-за чего угодно, от привязки отсутствующего IP-адреса до недопустимой папки виртуального каталога.

person Wonko    schedule 10.01.2014
comment
Вы пытались проверить журналы событий системных приложений, чтобы узнать, есть ли уважительная причина, по которой веб-сайт не запускается? - person Wonko; 10.01.2014

Зачем нужен скрипт для запуска сайта? Если вы используете Red Gate Deployment Manager, он запускает веб-сайт после развертывания веб-пакета (любого пакета с файлом web.config).

Возможно, подстановка значения для $RedGateWebSiteName не происходит и, вероятно, нужны двойные кавычки:

Начальный веб-сайт "$ RedGateWebSiteName"

Я говорю это, потому что ваше сообщение об ошибке говорит следующее:

Начальный веб-сайт ‹‹‹‹ $RedGateWebSiteName

в то время как сообщение об ошибке здесь отображает замененное значение:

start-website ‹‹‹‹ "Мой сайт"

person Chirayu Shishodiya    schedule 13.01.2014
comment
Спасибо за ответ, я попытался обойти это, и в результате получилось start-website ‹‹‹‹ $RedGateWebsiteName. Я также пытался выпустить его, потому что вы говорите, что Redgate запустит его сам. Но это, похоже, не работает. Покопаюсь в файле журнала и посмотрю, что не так. - person JochemQuery; 14.01.2014

У меня была точно такая же проблема при запуске сайта с помощью:

Start-Website -Name MyWebSiteName

и не заводится. Когда я попытался запустить его вручную в диспетчере IIS, он тоже не запустился, и я получил следующее сообщение об ошибке:

The World Wide Web Publishing Service (W3SVC) is stopped.  Websites cannot be started unless the World Wide Web Publishing Service (W3SVC) is running.

Это довольно ясно, что служба не запущена, и это оказалось правдой.

person Hadi Eskandari    schedule 28.06.2016