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

.NET Framework 4.8中能否使用.NET 7的System.Net.WebSockets.Client?

解决.NET Framework 4.8中ClientWebSocket握手426错误的方案

可以使用微软官方提供的System.Net.WebSockets.Client NuGet包替代.NET Framework 4.8内置的ClientWebSocket类,该包针对旧框架做了WebSocket协议的更新适配,能解决新供应商服务要求的握手问题(426 Upgrade Required错误)。

具体操作步骤:

  1. 安装NuGet包

    • 在Visual Studio中右键项目 → 「管理NuGet程序包」,切换到「浏览」标签,搜索System.Net.WebSockets.Client,选择适配.NET Framework 4.8的最新稳定版本安装。
    • 或通过Package Manager Console执行命令:
      Install-Package System.Net.WebSockets.Client
      
  2. 处理命名空间冲突
    由于内置类和NuGet包类的命名空间均为System.Net.WebSockets,需明确指定使用NuGet包中的类,两种方式可选:

    • 方式一:使用完整限定名
      在代码中直接用System.Net.WebSockets.ClientWebSocket实例化对象,确保编译器优先引用NuGet包的程序集。
    • 方式二:使用别名区分
      1. 右键项目引用中的System.Net.WebSockets.Client → 「属性」,设置一个自定义别名(比如WsClient)。
      2. 在需要使用该类的代码文件顶部添加:
        extern alias WsClient;
        
      3. 实例化时使用别名限定:
        var webSocket = new WsClient::System.Net.WebSockets.ClientWebSocket();
        
  3. 验证功能
    替换原有ClientWebSocket的实例化代码,保留原有业务逻辑,测试与供应商服务的连接,确认426握手错误是否消除。

注意事项

  • 安装包后检查项目引用顺序,确保System.Net.WebSockets.Client程序集优先级高于内置的系统程序集。
  • 大部分API与内置版本兼容,无需大规模修改业务代码,若出现小范围适配问题,可参考NuGet包的官方文档调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 05:08:19