我可以在 Windows 服务中托管(自托管)WCF 服务并通过 http 公开它吗?

Posted

技术标签:

【中文标题】我可以在 Windows 服务中托管(自托管)WCF 服务并通过 http 公开它吗?【英文标题】:Can I host (self host) a WCF Service in a Windows Service and expose it via http? 【发布时间】:2012-02-23 13:07:52 【问题描述】:

我是 WCF 的新手。这可能吗?如果它是通过外部 Web 应用程序使用的,最好使用 IIS 和 http,即由 ASP.NET MVC 应用程序托管的服务?

【问题讨论】:

【参考方案1】:

是的,您可以在 Windows 服务中托管 WCF 服务。

http://msdn.microsoft.com/en-us/library/ms733069.aspx

我会说如果你可以在 iis 中托管它可能会更好。

【讨论】:

我只是想确认在 Windows 服务中托管 WCF 服务意味着它仍然可以通过 http 端口 80 暴露给外部应用程序吗? 这是一个很好的问题,我假设服务必须以管理用户身份运行才能绑定到 1024 以下的端口。不过我很可能是错的。 我知道在 XP/Server 2003 上自托管端口 80(甚至 443)不是问题,但可能需要在 W7/ 上运行端口保留命令S2008. WCF 或 Windows 服务本身并没有限制您通过 http 端口 80 暴露它。但是,操作系统、防火墙、防病毒等可能会引起必须处理的头痛。

以上是关于我可以在 Windows 服务中托管(自托管)WCF 服务并通过 http 公开它吗?的主要内容,如果未能解决你的问题,请参考以下文章

连接到 Windows 服务中自托管的 SignalR 的问题

将 Web Api 服务自托管到 Windows 窗体中

选择使用 IIS 进行 WCF 服务托管或使用 Windows 服务进行自托管

自托管 WCF 服务和 basicHttpBinding:绑定不提供表示调用者的 Windows 标识

SignalR 自托管 Windows 服务,监听消息

自托管 WCF 中的模拟?