为 WCF REST 和 ASP.NET Web API 共享同一个端口

Sharing the same port for WCF REST and ASP.NET Web API

我有一个现有的基于 JSON 的服务,该服务是使用 WCF webhttpbinding 实现的。此服务托管在 Windows 服务中。我们也实施了 SSL。现在,我计划使用 ASP.NET Web API 创建新的基于 JSON 的服务,该服务应托管在 windows 服务中。但问题是客户端在防火墙后面,它们不能向世界公开许多端口,因此 我必须重新使用已经打开的端口 。我知道这是不可能的。 但是我们可以使用相同的端口来处理来自 WCF REST 和 ASP.NET Web API 的请求的解决方法吗?

编辑:我没有兴趣为此创建任何额外的 WCF router

WCF REST 和 Web API 可以共享同一个端口,只要路径不同即可。

例如,

// Starting WCF service in port 13375 (Running in Process 1)
ServiceHost wcfServiceHost = new ServiceHost(typeof(StaffIntegrationService));
wcfServiceHost.addServiceEndPoint(typeof(IStaffIntegrationService), webHttpBinding, “http://localhost:13375/wcf”);
wcfServiceHost.open();


// Start WebAPI in 13375 (Running in Process 2)
using (WebApp.Start<Startup>(url: “http://localhost:13375/api”))
{
   Console.WriteLine(“Service is started”);
}

WCF 和 Web API 运行 都成功并在端口 13375 上侦听。在幕后,此端口共享由 HTTP.SYS 模块处理。