【问题标题】:How to make a C# Windows Service that connect to a WebSocket?如何制作连接到 WebSocket 的 C# Windows 服务?
【发布时间】:2018-01-21 07:01:34
【问题描述】:

我是 Windows 开发的新手,来自 macOS 和 iOS 开发。

我正在尝试将我制作的 Mac 软件移植到 Windows。

为此,我需要编写一个 Windows 服务,该服务将从 Windows 开始,并负责维护与我的服务器的 WebSocket 连接。它基本上是一个自定义推送通知服务。

根据服务器的要求,服务将启动本地数据库的更新机制,稍后将由另一个应用程序读取。它需要在系统端,而不是用户端,因为产品目标是以某种方式管理某些系统功能。

我从 C# 中的 Windows Service 项目模板开始,然后尝试使用 Windows.Networking.Sockets.MessageWebSocket 添加我发现的支持 WebSocket 的方法。

但是,这会产生错误:The type or namespace name 'Windows' could not be found (are you missing a using directive or an assembly reference?) 对应于行 using Windows.Networking.Sockets;

经过几次 google 工作,我可能已经明白 Windows.Networking.Sockets 可能无法从 Windows Service 模板访问。

因为我不确定我来这里是要问实现这样一个目标的起点是什么。为什么我会收到此错误?如果是项目配置错误,解决方法是什么?如果我不能将此 API 用于服务,我有哪些选择?

谢谢

【问题讨论】:

    标签: c# windows service websocket


    【解决方案1】:

    Windows.Networking.Sockets 用于通用 Windows 平台,因此与 .NET Framework 或 .NET Core 不兼容。

    也就是说,从您的问题中不清楚您是在构建 .NET Framework 还是 .NET Core Windows 服务。

    .NET 框架

    对于 .NET Framework,您可以使用 System.Net.WebSockets 命名空间。

    .NET 核心

    对于 .NET Core,请参阅 Create a websocket server in .net core console application

    【讨论】:

    • 我也不确定。它适用于 Windows 10,它需要是使用 websocket、rest API、JSON 和本地文件的服务。因此,如果 .NET Framework 与它兼容,我会选择它,我不确定它是否是 Visual Studio 上服务模板的默认设置。
    • 好的,我可以确认我可以使用服务模板导入System.Net.WebSockets,这是一个很好的起点。感谢您的回答。来自 Windows 世界之外,对我来说,这个由多个不兼容版本的框架组成的系统还不是很明显
    • 请注意,这个答案解决了我的问题,但我的分数水平不允许我将其标记为已解决
    • 显然,creating Windows Services are not supported directly in .NET Core。但是,如果您希望您的代码可跨框架移植,链接中的建议可能仍然值得考虑。
    • 如果框架可以完成这项工作,那么使用 .Net Core 的意义何在?我只为 Windows 10 编写。
    猜你喜欢
    • 2021-09-11
    • 2013-03-01
    • 2023-02-22
    • 2015-08-29
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多