当 运行 IIS 和 WCF 应用程序侦听同一端口时发生冲突 (443)

Conflict when running IIS and WCF application listening on the same port (443)

我正在执行服务器迁移,在尝试使用相同的 IP 地址和端口同时托管 WCF 应用程序和 IIS 时遇到了一个问题。 (这在我们的其他服务器上完美运行)

新服务器是Windows 2012 R2 Standard

是运行IIS 8.5.9600.16384

我正在尝试创建与先前安装完全相同的副本,以便我们所有现有的客户端在(星期二)按下开关时继续工作。

WCF 应用程序作为 Windows 服务运行。

当我 'start' 网站时,我可以访问那里的网络服务。

如果我停止网站并启动我的 WCF 应用程序,我就可以访问我的 WCF 服务。

如果我随后重新启动该网站,WCF 服务将停止工作。

基本上,我无法让两者同时工作,但这在以前的服务器上运行良好。

我是不是漏掉了什么设置?

我正在监听的地址是...

https://test.banana.com/WebServices/myservice.asmx

https://test.banana.com/WCFService/mywcf.rem

*我在这个例子中使用了一个虚拟域名

**另外,live服务器的域名不同,所以不会有冲突。

我不认为同一台机器上的多个进程可以监听单个端口。操作系统如何知道将网络请求发送到哪里?

您使用不同的 DNS 无关紧要,因为 DNS 过滤/分派发生在 HTTPS 服务收到 GET 或 POST(或其他)请求之后。在此之前,操作系统无法知道请求将发送到哪个进程。使用 HTTPS 会使这变得更加复杂,因为请求是使用只有服务知道的证书加密的,因此 OS.

无法读取请求

我建议让 IIS 在端口 443 上托管所有服务。它可以使用请求 headers 为多个 HTTPS 站点定向流量。 IIS 可以读取 HTTPS 请求,因为您向 IIS 提供了证书。您可以在 IIS 中很好地托管 WCF 服务。

对于托管服务,IIS 也比 self-hosted 服务更可靠。

看来可能的,我现在已经可以使用了。

基本上,我无法在 IIS 和我的 WCF 服务之间共享端口的唯一原因是我在 IIS 绑定中指定了 'Host Name'。一旦我删除了主机名(我已将其设置为 test.banana.com),我的两项服务就开始工作了。

我猜这与 ip address/port 和主机名需要匹配才能使端口共享正常工作有关。因为我在 IIS 中指定了主机名,而不是在 WCF 中,所以它可能无法确定它是同一个端点(情况可能并非如此)