用于 TLS 上的 WebSocket Secure 的 WCF ServiceHost 配置
Posted
技术标签:
【中文标题】用于 TLS 上的 WebSocket Secure 的 WCF ServiceHost 配置【英文标题】:WCF ServiceHost configuration for use with the WebSocket Secure over TLS 【发布时间】:2016-03-10 12:20:39 【问题描述】:我已经使用 ServiceHost 创建了一个 WebSocket 服务器:
using (ServiceHost host = new ServiceHost(typeof(WebSocketsServer), baseAddress))
CustomBinding binding = new CustomBinding();
binding.Elements.Add(new ByteStreamMessageEncodingBindingElement());
HttpTransportBindingElement transport = new HttpTransportBindingElement();
transport.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always;
transport.WebSocketSettings.CreateNotificationOnConnection = true;
binding.Elements.Add(transport);
host.AddServiceEndpoint(typeof(IWebSocketsServer), binding, "");
host.Open();
它适用于我的 javascript 应用程序。目前我正在尝试添加对 WebSocket Secure 的支持。我已将 HttpTransportBindingElement 更改为 HttpsTransportBindingElement,将 baseurl 更改为 https://,并将 JavaScript 应用程序中的连接 url 更改为 wss://
using (ServiceHost host = new ServiceHost(typeof(WebSocketsServer), baseAddress))
CustomBinding binding = new CustomBinding();
binding.Elements.Add(new ByteStreamMessageEncodingBindingElement());
HttpsTransportBindingElement transport = new HttpsTransportBindingElement();
transport.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always;
transport.WebSocketSettings.CreateNotificationOnConnection = true;
binding.Elements.Add(transport);
host.AddServiceEndpoint(typeof(IWebSocketsServer), binding, "");
host.Open();
我期待它会工作,应用程序启动时没有错误,但在连接 JavaScript 后我收到此错误。
WebSocket connection to 'wss://localhost:5555/wsData' failed: Error in connection establishment: net::ERR_CONNECTION_RESET
为了安全使用 WebSocket,是否需要对 ServiceHost 进行任何其他设置?微软的 ServiceModel 中是否实现了 WebSocket 安全?
【问题讨论】:
【参考方案1】:我终于找到了解决方案。上面提到的代码适用于该场景,但我必须为主机配置证书并通过 HTTPS 运行客户端应用程序。这篇文章很有帮助Self hosted WCF using WebSockets is not working using SSL
【讨论】:
以上是关于用于 TLS 上的 WebSocket Secure 的 WCF ServiceHost 配置的主要内容,如果未能解决你的问题,请参考以下文章