Windows 7 Websocket PlatformNotSupportedException

Windows 7 Websocket PlatformNotSupportedException

我正在开发一个使用 Microsoft.Azure.Devices.Client NuGet 包的应用程序。 运行 在 Windows 10 上一切都很好,但是在 Win7 机器上测试时我得到了这个聚合异常。

System.PlatformNotSupportedException: The WebSocket protocol is not supported on this platform.

四处搜索,我发现有几个帖子说 Windows 7 不支持此功能,并且有一些 "Microsoft's working on it" 类型的评论。

https://github.com/5andr0/PogoLocationFeeder/issues/229

自 2016 年以来,我没有多少更新或解决方案。

多一点搜索让我找到了 Microsoft Web 平台安装程序 https://www.microsoft.com/web/downloads/platform.aspx

我们尝试安装 "IIS 10.0 Express" 和 "Microsoft Azure PowerShell",但仍然没有成功。

我们正在将我的 W10 机器上的所有 Web 平台安装到 W7 上......其中大部分似乎都具有一对一支持。

谁能评论一下 W7 是否已完成或计划这样做?

或者在我尝试将不可能的事情变为现实之前,我真的需要换个方向吗?

除了 Web 服务安装之外,我的 W7 安装程序中可能还缺少一个包?

在此先感谢您的任何意见!!!

你在 "A little more searching" 之后所做的一切都是错误的。请停止这样做。

简短的回答是,你试图让一些不可能的事情成功,因为微软本身不愿意在 Windows Vista 和 7 上支持 WebSockets(很久以前就没有主流支持)。尝试使用其他替代方法,不要浪费您的时间。

长答案是,

  • Microsoft 当前的假设始终是 WebSockets 需要 Windows8 及更高版本。那是因为限制在于 http.sys 和 HTTP API,这是一个 OS 组件。
  • Microsoft 确实拥有在 Windows Vista 和 7 for .NET 应用程序上支持 WebSockets 的技术,无需 OS 级别更改,通过重用其对 macOS 的 WebSockets 支持的托管实现和 Linux。他们还没有完成所有的工作,https://github.com/dotnet/corefx/issues/9503

正如 GitHub 问题状态(待售)所显示的那样,如果您愿意,可以继续工作并帮助自己。我不会说这是不可能的,但与转向可行的替代方案相比,它并不简单。

当然,如果你有雄心壮志,有能力解决困难,你一定要挺身而出解决它,不仅是为了你自己,也是为了所有像你这样的开发者。

祝你好运。

[2018 年 3 月 27 日更新]

https://github.com/dotnet/corefx/pull/26429

Microsoft 终于在所有地方启用了托管实现(UWP 除外)。因此,如果您的应用程序以 .NET Core 2.1 及更高版本为目标,它应该能够 运行 WebSockets on Windows Vista/7。关于 .NET Framework 应用程序的故事尚不为人所知。

我遇到了同样的问题并使用以下 nuget 包解决了它:

System.Net.WebSockets.Client.Managed

https://www.nuget.org/packages/System.Net.WebSockets.Client.Managed/

github 来源:https://github.com/PingmanTools/System.Net.WebSockets.Client.Managed

Creates a ClientWebSocket that works for this platform. Uses System.Net.WebSockets.ClientWebSocket if supported or System.Net.WebSockets.Managed.ClientWebSocket if not.