【问题标题】:Problem connecting SignalR to Hub Server from Windows Service从 Windows 服务将 SignalR 连接到 Hub 服务器时出现问题
【发布时间】:2019-12-22 19:50:37
【问题描述】:

我是 ASP.NET Core 和 SignalR 的新手,当然,我使用 Visual Studio Professional 2017 进行了很多试验。

我有一个带有 .NET Core 2.1 的 MVC 应用程序,它使用 NuGet 包 Miccrosoft.NETCore.App 和 Microsoft.AspNetCore.App。我在源代码中添加了集成的 SignalR 支持,如我阅读的所有文档中所述,例如

  • services.AddSignalR();Startup.ConfigureServices

  • app.UseSignalR(hubRouteBuilder => {hubRouteBuilder.MapHub<MessageHub>("/MessageHub");});在方法Startup.Configure中。

我还添加并实现了 Web 应用的客户端 javascript,并创建了我的 MessageHub 类。

我构建了一个基于 .NET Framework 4.7.2 的简单 Windows 应用程序 (IWinForm),使用从 Web 上的 WPF 应用程序示例中获取的相同实现,该应用程序与我的 Web 应用程序完美配合,集成了相同的 Microsoft .AspNetCore.SignalR.Client 包(V 1.0.3)与 WPF 中的 Windows 客户端一样,在连接到托管集线器连接的 Web 应用程序时一切正常。使用我的 windows 客户端,我可以完美地在 web 应用程序和 windows 应用程序之间来回发送消息,即使使用两个不同的“消息接收器”,每个都在自己的应用程序中实现。正如我所说,一切都很好

现在我的下一步是做同样的事情,但使用 Windows 服务应用程序作为客户端,所以我创建了一个 Windows 服务应用程序,构建在与我的 WinForm 客户端 (.NET Framework 4.7.2) 相同的框架上。然后,我完全重现了windows应用程序中实现的步骤,例如使用与windows应用程序相同的包版本,建立连接,connection.On等,就像我在windows应用程序中所做的一样,但它没有连接到网络应用程序。我告诉自己,只要覆盖 OnStart 没有完成,Windows 服务的状态就不会“运行”,所以我实现了一个特定的方法 StartService,从覆盖调用如下:Task.Run(() => StartService()); 并且,为了连接到服务正确启动并运行后的 Web 服务器集线器,我设置了一个计时器,在 10 秒后触发运行connection.StartAsync(); 不幸的是,与 Windows 应用程序不同,与 Web 集线器的连接没有完成(使用 WireShark 观看),因此没有消息交换。

我试图在windows服务中找到一种方法来知道连接是否成功,例如C#中集线器连接上的连接状态,但我没有找到方法。

我有很多问题,比如我应该升级我的 SignalR 客户端还是类似的东西,但我的主要问题仍然是:为什么在 windows 应用程序中成功使用的模式有效,但在 windows 服务中却没有相同的模式?

欢迎任何建议,非常感谢您的帮助。

【问题讨论】:

    标签: asp.net-core windows-services signalr.client


    【解决方案1】:

    经过多次尝试,我终于发现,当我的 Windows 服务尝试连接到 SignalR 服务器时,这个服务是在 SSL 中启动的。因此,在没有任何证书的情况下,该服务无法连接并收到 HttpRequestException,我从中发现了问题。一旦我从 Web 主机应用程序中删除 SSL,它就开始正常工作。 我仍然有一些疑问,例如:为什么我的 Windows 窗体应用程序在 SSL 下连接没有问题,而 Windows 服务却没有。如果有人可以向我解释,将不胜感激。提前致谢。皮埃尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      相关资源
      最近更新 更多