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

C# 在同一端口上运行IIS和WCF应用程序侦听时发生冲突(443),c#,asp.net,wcf,iis,C#,Asp.net,Wcf,Iis,我正在进行服务器迁移,在尝试同时使用相同的IP地址和端口托管WCF应用程序和IIS时遇到了一个问题。(这在我们的另一台服务器上非常有效) 新服务器是Windows 2012 R2标准 它正在运行IIS 8.5.9600.16384 我正在尝试创建一个与以前安装完全相同的副本,这样我们所有的现有客户机都可以在(周二)切换开关时继续工作 WCF应用程序作为Windows服务运行 当我“启动”网站时,我可以访问网站上的web服务 如果我停止网站并启动我的WCF应用程序,我就可以访问我的WCF服务 如果

我正在进行服务器迁移,在尝试同时使用相同的IP地址和端口托管WCF应用程序和IIS时遇到了一个问题。(这在我们的另一台服务器上非常有效)

新服务器是Windows 2012 R2标准

它正在运行IIS 8.5.9600.16384

我正在尝试创建一个与以前安装完全相同的副本,这样我们所有的现有客户机都可以在(周二)切换开关时继续工作

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

当我“启动”网站时,我可以访问网站上的web服务

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

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

基本上,我不能让两者同时工作,但这在以前的服务器上工作得很好

我是不是错过了一个场景

我正在收听的地址是

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

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


**另外,live server有不同的域名,因此没有冲突。

我认为一个端口不能被同一台机器上的多个进程监听。操作系统如何知道向何处发送网络请求

您使用的是不同的DNS并不重要,因为DNS过滤/分派发生在HTTPS服务收到GET或POST(或其他)请求之后。在这种情况发生之前,操作系统无法知道请求将进入哪个进程。使用HTTPS使这一点更加复杂,因为请求使用只有服务知道的证书进行加密,因此操作系统无法读取请求

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


IIS对于托管服务来说也比自托管服务更可靠。

看来它毕竟是可能的,我现在已经让它工作了

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


我猜这与ip地址/端口和主机名需要匹配才能使端口共享正常工作这一事实有关。由于我是在IIS中指定主机名,而不是在WCF中指定主机名,所以可能无法确定它是同一个端点(可能不是这样)

检查HTTPS的绑定信息-假设IIS/WCF应该在指向同一服务器的两个不同DNS名称上运行…很丰富,您可以有多个具有相同端口的应用程序,因为每个都有不同的dns。检查两个应用程序是否都有有效的dns。您说您正在迁移您的服务器,在旧服务器中,两个应用程序都运行正常吗?如果是这样,您只需要修复新机器IP的dns指向,或者您需要为这两个应用程序创建一个有效的dns。@AlexeiLevenkov,我已经编辑了我的问题以显示dns名称。如何查看绑定信息?请在您了解实际设置后告诉我们…@oɔɯǝɹ-我已经发布了我的答案-结果是它只需要稍微调整一下,希望在接下来的几天里,我会理解为什么。我在现有服务器上使用此配置,但在新服务器上无法使用它。我无法更改这些服务的托管方式。WCF应用程序作为Windows服务运行,该服务具有附加功能(它不仅承载网络请求),您确定IIS正在旧计算机上侦听端口443吗?您需要比较该计算机上所有站点的站点绑定。是的,WCF和IIS都在端口443上侦听(请参见上面的URL)。不可能让多个进程在同一台计算机上侦听同一ip地址/端口。查看“旧”计算机可能正在使用多个ip地址。
https://test.banana.com/WCFService/mywcf.rem