我使用WCF webhttpbinding实现了现有的基于JSON的服务。此服务托管在Windows服务中。我们也实现了SSL。现在我打算使用ASP.NET Web API创建新的基于JSON的服务,它应该托管在Windows服务中。但问题是客户端是在防火墙后面,他们无法向世界公开许多端口,因此我将重用已经打开的端口。我知道这是不可能的。 但是,是否有任何解决方法可以使用相同的端口来处理WCF REST和ASP.NET Web API的请求?
编辑:我没有兴趣为此创建任何额外的WCF router。
答案 0 :(得分:3)
只要路径不同,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模块下,此端口共享由此负责。