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

C#应用通过WSS连接Node.js服务器触发PlatformNotSupportedException

解决C# WebSocket连接Node.js WSS服务器时的System.PlatformNotSupportedException异常

看起来你碰到的问题主要是两个核心点:自签名证书的信任问题和SSL协议版本不匹配,咱们一步步来拆解解决:

1. 先搞定自签名证书的信任问题

你的Node.js服务器用的是自己生成的证书(cert.pem/key.pem),这类自签名证书不在系统默认的信任根列表里。Chrome扩展和前端JS能正常连接,大概率是你之前在浏览器里手动信任过这个证书,或者浏览器允许临时跳过验证,但C#的WebSocket客户端(包括websocket4net)对SSL证书的验证要严格得多,这很可能是触发异常的首要原因。

解决方案(二选一):

  • 测试/开发环境:直接禁用证书验证(仅限开发用,生产环境绝对不能这么做):
    _socket = new WebSocket("wss://127.0.0.1:8080");
    // 跳过证书验证
    _socket.SslConfiguration.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
    
  • 生产/正式测试环境:把你的自签名证书导入到C#应用运行机器的受信任根证书颁发机构存储中,导入后客户端就会信任这个证书了。

2. 强制指定SSL协议版本为TLS 1.2

你提到连接wss://echo.websocket.org时必须设置Tls12才能成功,说明你的C#客户端默认的SSL协议版本可能偏低(比如TLS 1.0/1.1),而Node.js的新版本默认会禁用这些旧协议,只支持TLS 1.2及以上。

解决方案:

在websocket4net的客户端配置里明确指定SSL协议版本:

_socket.SslConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12;

3. 整合后的完整C#代码

把上面两个配置结合起来,你的客户端初始化代码应该改成这样:

_socket = new WebSocket("wss://127.0.0.1:8080");
_id = Guid.NewGuid().ToString();

// 关键配置:指定SSL协议为TLS 1.2
_socket.SslConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12;
// 关键配置:跳过自签名证书验证(开发用)
_socket.SslConfiguration.ServerCertificateValidationCallback = (sender, cert, chain, errors) => true;

_socket.OnOpen += (sender, e) => {
  Console.WriteLine("WebSocket Connection is now Open with ID: " + _id);
};
_socket.OnMessage += (sender, e) => {
  Console.WriteLine("On Message");
  Console.WriteLine(e.Data);
};
_socket.Connect();

4. 可选:给Node.js服务器明确指定SSL协议版本

为了确保两端协议完全匹配,你也可以在Node.js的HTTPS配置里强制要求TLS 1.2:

var https = require("https").createServer({
  cert: fs.readFileSync(__dirname + "/certs/cert.pem"),
  key: fs.readFileSync(__dirname + "/certs/key.pem"),
  minVersion: 'TLSv1.2' // 明确最低支持TLS 1.2
}, app)

这样调整之后,你的C#客户端应该就能像连接echo服务器一样顺利连上自己的Node.js WSS服务器了。

内容的提问来源于stack exchange,提问作者Skunz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:42:34