如何在部署窗口服务托管的WCF服务时管理端口号

时间:2014-12-03 22:51:39

标签: c# .net web-services wcf

很抱歉,如果这听起来很简单,但我对wcf / network很新,所以请耐心等待。

我想将窗口服务托管的WCF服务部署到三个服务器(Dev,UAT,Prod),因此每个服务器的端点url需要存储在数据库中,以便可以使用脚本自动部署。窗口服务除了托管wcf服务之外什么都不做,当它启动时,我将端点url设置为localhost:8081 / MyCompnay / MyService,只需使用默认的BasicHttpBinding传递给服务主机构造函数。我目前正在选择一个随机端口号(8080几乎肯定已经在使用中),我想知道在这种服务将部署到不同服务器的情况下管理端口号的最佳方式是什么?我担心即使我使端口号可配置,也可能在关机后重新启动我的服务时,某些其他应用程序可能会使用相同的端口号(无论出于何种原因!)。我想确保我设置的端口号不会被其他应用程序占用。 希望我已经说清楚了。

1 个答案:

答案 0 :(得分:1)

永远不能保证不会使用端口号。您可以拥有一系列端口号,您可以尝试使用它们直到找到有效的端口号。如果找不到有效的那个,那么就会出错并告知用户。选择49151以上的端口号,因为它们被视为private ports

如果您不需要HTTP绑定,可以使用不需要端口的命名管道绑定,但使用它也有不同的限制。

还可以选择使用IANA注册您的端口号,然后使用您的端口的任何人在技术上都是糟糕的应用程序,但没有阻止它。这对于绝大多数应用来说都是过度杀伤力。