我正在尝试构建一个简单的ASP.NET 5应用程序,其中包含SignalR,它应该定期向客户端推送消息(例如,实现一个仪表板,将值从服务器推送到浏览器)。
我研究了一些帖子,例如http://arulselvan.net/realtime-dashboard-asp-net-signalr-angularjs-d3js/或http://henriquat.re/server-integration/signalr/integrateWithSignalRHubs.html。它们建议在实现System.Web.Hosting
命名空间中实现IRegisteredObject
的类中实现一个计时器。
然而,我似乎无法找到ASP.NET 5中的IRegisteredObject
所在的命名空间。在ASP.NET 5中,不存在System.Web
命名空间。我没有在网上找到任何相关信息。在ASP.NET 5中,它的替代品是什么?
更新
我正在尝试以下解决方案:
创建一个封装计时器的服务
在
Startup.cs
中将其注册为单例服务,例如:public class Ticker { Timer timer = new Timer(1000); public Ticker() { timer.Elapsed += Timer_Elapsed; timer.Start(); } private void Timer_Elapsed(object sender, ElapsedEventArgs e) { // do something } }
public void ConfigureServices(IServiceCollection services) { // ... Ticker ticker = new Ticker(); ServiceDescriptor sd = new ServiceDescriptor(typeof(Ticker), ticker); services.Add(sd); // ... }
这种方法如何?
HostingEnvironment.QueueBackgroundWorkItem
方法怎么样?它是在 .NET 4.5 中引入的,取代了IRegisteredObject
。 - AndersSystem.Web.Hosting
中 - 看起来这个命名空间已经不存在了,就像System.Web
本身一样。 - AunAun