Одно из моих приложений (скажем, app1
), работающее под веб-сайтом в IIS, создало привязку https
во время развертывания. Однако, когда другое приложение (скажем, app2
) на том же веб-сайте недавно развернулось с помощью сценария Power Shell, оно удалило ранее добавленную привязку https
и сломало app1
.
Когда я посмотрел сценарий развертывания app2
, я понял, что есть функция, позволяющая проверить, существует ли привязка, - если да, просто вызовите Set-ItemProperty
, чтобы обновить эту привязку или создать ее. Эта идея выглядит хорошо для меня - в основном это говорит о создании привязки, специфичной для приложения, или обновлении, если оно уже существует. Но я не уверен, почему Set-ItemProperty
для http
удалена https
привязка (на самом деле все остальные, а также net.tcp
, net.pipe
и т. Д.)
Ниже приведен function
из этого сценария развертывания.
Import-Module -Name WebAdministration
function SetBindingsIIS
{
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$WebsiteName,
[HashTable]$protocol
)
$Status=$null
$GetProtocolName= $protocol["Protocol"]
$BindingsCollection=Get-ItemProperty -Path "IIS:\Sites\$WebsiteName" -Name Bindings
$ProtocolExists=$BindingsCollection.Collection | Where-Object{$_.protocol -eq $GetProtocolName}
Try
{
if($ProtocolExists -eq $null)
{
New-ItemProperty -Path IIS:\Sites\$WebsiteName -Name Bindings -Value $protocol -Force
}
else
{
Set-ItemProperty -Path "IIS:\Sites\$WebsiteName" -Name Bindings -Value $protocol -Force
}
$Status="Success"
}
Catch
{
$ErrorMessage=$_.Exception.Message
$Status="Error in Add/Update bindings : $ErrorMessage"
}
return $Status
}
Запуск этой функции просто удаляет все существующие привязки, уже настроенные для веб-сайта в IIS
SetBindingsIIS -WebsiteName "TestMiddleTierSite" -protocol @{Protocol="http";BindingInformation=":81:"}