[英]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服务运行。
当我“启动”该网站时,我可以访问那里的Web服务。
如果我停止该网站并启动WCF应用程序,则可以访问WCF的服务。
如果然后我重新启动该网站,则WCF服务停止工作。
基本上,我不能同时使它们同时工作,但这在以前的服务器上可以正常工作。
我在某处缺少设置吗?
我正在听的地址是...
https://test.banana.com/WebServices/myservice.asmx
和
https://test.banana.com/WCFService/mywcf.rem
*在此示例中,我使用的是虚拟域名
**此外,实时服务器具有不同的域名,因此这里没有冲突。
我认为同一台计算机上的多个进程无法监听单个端口。 操作系统如何知道将网络请求发送到哪里?
使用不同的DNS没关系,因为DNS过滤/调度发生在HTTPS服务收到GET或POST(或其他)请求之后。 在此之前,操作系统无法知道请求将进入哪个进程。 使用HTTPS会使情况更加复杂,因为使用仅服务知道的证书对请求进行了加密,因此OS无法读取该请求。
我建议让IIS在端口443上托管所有服务。它可以使用请求标头为多个HTTPS站点定向流量。 由于您向IIS提供了证书,因此IIS可以读取HTTPS请求。 您可以在IIS中很好地托管WCF服务。
对于托管服务,IIS比自托管服务更可靠。
看来,这毕竟是可能的,而且我现在有工作。
基本上,我无法在IIS和WCF服务之间共享端口的唯一原因是,我在IIS绑定中指定了“主机名”。 删除主机名(我将其设置为test.banana.com
)后,我的两个服务都开始工作。
我猜测这与IP地址/端口和主机名需要匹配才能使端口共享正常工作有关。 当我在IIS中而不是WCF中指定主机名时,可能无法确定它是同一终结点(事实可能并非如此)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.