为什么我不能在多个网站共享的现有端口上绑定发布?

Why can't I release with a binding on existing port that is shared between several websites?

我正在尝试将网站部署到远程计算机(IIS Web 部署)。

目标机器是我托管了几个网站的专用主机。

默认网站绑定了80端口。 其他网站 运行 作为 http 也分配了相同的端口,而 https 有另一个端口但也在所有网站之间共享。

通过 Azure DevOps 部署时,我设置了默认绑定:

http/All Unassigned:80:

我在部署时遇到错误:

##[error]Binding (http / * : 80 : ) already exists for a different website ("site "default web site" (id:1,bindings:http/*:80:,state:started)"), change the port and retry the operation.

为什么每个发布定义/网站都需要另一个绑定?

它的实际含义是什么 "All unassigned"?要我指定更多端口以供选择吗?

您遇到了预期的错误,因为您使用的是默认绑定并且没有停止 IIS 上的默认网站,该网站也使用默认绑定。

如您所述,默认绑定仅指定端口 80 而未指定主机。

但是,IIS 需要能够准确地确定它应该将请求转发到的网站。站点的绑定应该彼此不同。如果两个站点具有相同的绑定,则一次只能 运行 一个。否则会造成冲突。这就是您收到此类错误消息的原因。

所以,正常情况下,此类错误消息的解决方案是更改端口、停止默认网站或添加主机名。

如果你真的需要这些网站共享一个端口,恐怕唯一的解决办法就是添加一个主机名: