为WCF REST和ASP.NET Web API共享相同的端口

时间:2015-01-16 16:42:39

标签: asp.net-web-api wcf-rest webhttpbinding

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

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

1 个答案:

答案 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模块下,此端口共享由此负责。

相关问题