C# Signalr N层/类库从服务器向客户端获取更新

C# Signalr N层/类库从服务器向客户端获取更新,c#,model-view-controller,signalr,layer,C#,Model View Controller,Signalr,Layer,我是新来的(信号员),我一直在读这方面的文章,但是,我没有发现,我也不知道我是否做得更好 我要做的是,当从windows服务向数据库发送插入时,从我的类库通知向客户端发送更新,因此我执行插入并调用中心(类库通知),您可以向客户发送通知,并实时更新图形 我发出类库通知,从nuget signalr客户端和组件安装,并构建所有组件,但这一切都不起作用,代码如下: 这是Project Windows服务中的方法: public void ProcessResults() {

我是新来的(信号员),我一直在读这方面的文章,但是,我没有发现,我也不知道我是否做得更好

我要做的是,当从windows服务向数据库发送插入时,从我的类库通知向客户端发送更新,因此我执行插入并调用中心(类库通知),您可以向客户发送通知,并实时更新图形

我发出类库通知,从nuget signalr客户端和组件安装,并构建所有组件,但这一切都不起作用,代码如下:

这是Project Windows服务中的方法:

public void ProcessResults()
        {
            RuleDto ruleToExecute;
            using (var svc = new ServiceWrapper<ICentralMonitor>(ConfigurationManager.AppSettings["MonitorBinding"]))
            {
                 ruleToExecute = svc.Channel.GetRulesToApplyByValidationGroup(Id, _results.ToDictionary(m => m.Key.Id, pair => pair.Value));
            }

            if (ruleToExecute != null)
            {   
                foreach (var action in ruleToExecute.Actions)
                {
                    object[] parameters = { Id };
                    InvokeHandler.InvokeAction(action.Assembly, action.Namespace, action.Class, action.Method, parameters);
                }

                **NotificationHub notifier = new NotificationHub();
                notifier.NotifierInsertExecutionRule(Id);**
            }

            UpdateCurrentState();
        } 

This is the Project class library Notifications: (This is all what have this project)

public class NotificationHub : Hub
    {
        public async void NotifierInsertExecutionRule(long id)
        {
            var stats = await StatisticsController.CreateModelAsync(id);
            hubContext.Clients.All.updateStatistics(stats);
        }
    }

提前感谢

过程结果正在创建一个您的客户端未连接到的HubContext。 另外,尝试从客户端调用Hub,至少看看它是否工作,您的客户端所做的只是监听。即:

hub.invoke("notifierInsertExecutionRule", someId);
此外,要从中心外部访问hubcontext,您必须执行以下操作

var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
hubContext.Clients.All.updateStatistics("Message");
var-hubContext=GlobalHost.ConnectionManager.GetHubContext();
hubContext.Clients.All.updateStatistics(“消息”);

要做的第一件事是在集线器中重载
OnConnected
onDisconnected
on重新连接
方法,并在这些方法上放置断点以查看是否正在连接
hub.invoke("notifierInsertExecutionRule", someId);
var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
hubContext.Clients.All.updateStatistics("Message");