我正在尝试将多个网站部署到从TFS 2015运行IIS的单个主机。我正在尝试让所有网站都使用“需要服务器名称指示”选项,以便它们都可以在相同的IP地址下运行。 (如果我手动设置所有内容,此设置在IIS中可以正常工作 - 我的问题/问题来自于从TFS 2015部署)。
部署链中的FIRST站点工作正常,但任何后续站点似乎都失败并出现以下错误:
System.Exception: SSL Certificate add failed, Error: 183 Cannot create a file when that file already exists.
我正在部署的每个网站都有不同的SSL证书,我已将它们全部导入到本地计算机\个人存储中。
突出显示“IIS Web App管理”任务的发布定义的屏幕截图如下所示。
有关如何在发布定义中解决此错误的任何建议,以便我可以干净地部署而无需人工干预?
我想我可以尝试的一件事是从PowerShell执行所有IIS管理步骤,但希望更充分地使用这些工具,而不是滚动新脚本来执行看起来他们应该能够本地执行的操作
感谢任何见解。
答案 0 :(得分:0)
如果您尝试将证书绑定到已绑定到此证书或其他证书的端口,则会显示错误消息。
您可以尝试为网站设置不同的端口。
如果不影响网站,您还可以尝试添加步骤(命令行/ Powershell步骤)以在下次部署步骤之前删除现有绑定。
例如:
$> netsh http delete sslcert ipport:1.1.1.1:443
参考以下文章删除绑定:
答案 1 :(得分:0)
我让事情有效 - 但我必须基本上消除WinRM中的绑定配置 - IIS应用管理任务。我保持一切相同但在这些任务中根本没有指定绑定信息,然后添加了一个看起来像这样的目标机器电源shell脚本(指纹和站点域已更改):
Import-Module WebAdministration
if ($null -eq (Get-WebBinding | Where-Object {$_.BindingInformation -eq "*:443:iddev.mydomain.com"}))
{
New-WebBinding -Name "Identity-B2B" -Port 443 -Protocol "https" -HostHeader "iddev.mydomain.com" -SslFlags 1
New-Item -Path "IIS:\SslBindings\!443!iddev.mydomain.com" -Thumbprint "88E811B7A9417DACAAAAAAAAAA1C36AA0BA238FF1E0F" -SSLFlags 1
}
if ($null -eq (Get-WebBinding | Where-Object {$_.BindingInformation -eq "*:443:iddev.myotherdomain.com"}))
{
New-WebBinding -Name "Identity-B2C" -Port 443 -Protocol "https" -HostHeader "iddev.myotherdomain.com" -SslFlags 1
New-Item -Path "IIS:\SslBindings\!443!iddev.myotherdomain.com" -Thumbprint "BE38195A2BBBBBBBBBBBBBBB1C2AB5762C9" -SSLFlags 1
}