如何在构建windows服务时选择要使用的端口?(windows&;net)

如何在构建windows服务时选择要使用的端口?(windows&;net),windows,web-services,http,port,Windows,Web Services,Http,Port,我正在编写一个windows服务,它将为机器上的其他进程公开http RESTful web服务。这将部署到各种公司台式机上的许多机器上,我几乎无法控制这些机器。我应该如何选择我的服务应该侦听的端口 我将使其可配置,但需要知道如何选择一些合理的默认值 仅供参考,我计划使用.NET 3.5(由于部署原因无法使用4.0)和WCF 更新:澄清一下,这些是公司非开发机器。我想选择一个不太可能用于其他任何用途的端口。从这个列表中(谢谢@Pascal Thivent),我想我应该在动态/私有范围中选择一个

我正在编写一个windows服务,它将为机器上的其他进程公开http RESTful web服务。这将部署到各种公司台式机上的许多机器上,我几乎无法控制这些机器。我应该如何选择我的服务应该侦听的端口

我将使其可配置,但需要知道如何选择一些合理的默认值

仅供参考,我计划使用.NET 3.5(由于部署原因无法使用4.0)和WCF

更新:澄清一下,这些是公司非开发机器。我想选择一个不太可能用于其他任何用途的端口。从这个列表中(谢谢@Pascal Thivent),我想我应该在动态/私有范围中选择一个

动态和/或专用端口是从49152到65535的端口


那么,有没有更好的方法选择该范围内的端口,或者我只是随机选择?

如果您的服务是HTTP,那么您应该使用端口80—标准HTTP端口。这是大多数REST Web服务的典型特征。

向HTTP的Internet分配号码管理局(IANA)注册的官方分配是:

  • 80:HTTP的标准端口
  • 8080:HTTP备用(通常由作为非根用户运行的缓存、代理或web服务器使用)
以下端口为非官方端口(未在IANA注册),也用于:

  • 8081:HTTP备用
  • 8090:HTTP备用端口(用作端口8080的备用端口)
我不知道您的目标是哪种机器,但如果它们包括开发机器,我可能会使用8090来最小化可能的冲突

工具书类

最终,我们在注册端口范围内选择了一个任意未使用的端口(从1024到49151),然后在有人出现并将该端口用于其他用途时对其进行配置。最好的解决方案是注册该端口


我们选择不使用动态端口,因为进程可以任意开始使用它们,因此端口是否可用的一致性较差

如果使用端口80,则8080等是常见的替代方案。该服务在桌面计算机上运行。端口80不合适,因为我没有提供通用的web服务器,很可能其他东西(如skype)已经占用了该端口。在这种情况下,@Daniel的评论是相关的:8080及以上。(顺便说一句,我希望我的-1不是为了回答最初发布的问题…)它们是非开发办公环境中的标准公司台式机。我不想使用标准端口,而是选择一个不太可能用于其他任何用途的端口。不能保证给定的端口是免费的,它可能暂时正在使用。