You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET/C# 无需IIS在Windows服务中自托管WebSocket服务咨询

自托管Windows服务搭建WebSocket服务器问题

这个问题此前有过公开讨论,但未得出明确结论。

我目前有一个运行多个WCF REST Web服务的自托管Windows服务,想要在其中搭建WebSocket服务器,需求并不复杂,仅需消费传入的数据流。但我无法修改数据的发送方式,协议是固定的,没办法转换为流式HTTP POST请求。

微软官方文档显示WebSocket类从.NET Framework 4.5开始可用,我使用的是受支持的.NET Framework 4.8,但找不到无IIS自托管的相关方案,现有示例大多基于IIS,不符合我的使用场景。

我想确认两点:

  • WebSocket类是否可以用来在Windows服务中自托管WebSocket服务器?
  • 如果可以,如何实现?希望能提供示例代码。

补充:
我发现这部分内容似乎没有完善的官方文档,但我最终已经实现了功能,关键操作是把地址中的localhost或*替换为+,以下代码可以在不影响现有WCF Web服务运行的前提下托管WebSocket服务:

WebSocketsServer.Start("http://+:80/Socket/");

部分说明可以在HttpListener的相关官方文档中查看,但我还是没搞清楚+和*的适用场景和实际作用差异:

指定端口时,主机元素可以替换为"",表示如果请求的URI没有匹配到其他任何前缀,HttpListener会接收发往该端口的所有请求,例如要接收发往8080端口、且未被其他HttpListener处理的所有请求,前缀为http://:8080/。同理,要指定HttpListener接收发往某端口的所有请求,可以将主机元素替换为"+"字符,例如https://+:8080。"*"和"+"字符可以出现在包含路径的前缀中。

我还是没有完全理解其中的逻辑,有没有相关参考资料可以解释这种配置生效的原因?

内容的提问来源于stack exchange,提问作者www.jensolsson.se

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:54:01