C# 我能';t定义“;“客户”;信号员

C# 我能';t定义“;“客户”;信号员,c#,asp.net-mvc,signalr,C#,Asp.net Mvc,Signalr,我开始与signalR合作,但我有一个错误(我在网上看到了几个答案,但没有一个对我有帮助),我有以下文件: GenteHub.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.AspNet.SignalR; using Microsoft.AspNet.SignalR.Hubs; name

我开始与signalR合作,但我有一个错误(我在网上看到了几个答案,但没有一个对我有帮助),我有以下文件:

GenteHub.cs

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Microsoft.AspNet.SignalR;
    using Microsoft.AspNet.SignalR.Hubs;

    namespace EjemploSignal
    {
        public class GenteHub:Hub
        {
            [HubMethodName("noti")]
            public static void llenarDatos()
            {
                IHubContext context = GlobalHost.ConnectionManager.GetHubContext<GenteHub>();
                context.Clients.All.updateDatos();
            }
        }
    }
var notificationHub = $.connection.genteHub;

    $.connection.hub.start().done(function () {
        cargarDatos();
    });

    $.notificationHub.client.updateDatos = function () {
        cargarDatos();
    };

    function cargarDatos() {
        $.ajax({
            url: "Home/lista",
            method: "GET",
            async: false,
            dataType: "json",
            success: function (respuesta2) {
                console.log("Respuesta", respuesta2);

            }
        });
    }
<script src="~/Scripts/jquery-3.3.1.js"></script>
    <script src="~/Scripts/jquery.signalR-2.3.0.js"></script>
    <script src="~/signalr/hubs"></script>
    <script src="~/Scripts/enlace.js"></script>
    <script src="~/Scripts/modernizr-2.6.2.js"></script>
    <script src="~/Scripts/bootstrap.min.js"></script>
Layout.html(脚本参考)

这取决于文件
hub
未生成的原因,因为:

  • 文件的正确顺序没有被放置(当我有它们时 顺序为“jquery、jquery信号、hub”)
  • 它必须放置或不放置符号(~)(坏的是我 安装并卸下它,错误仍然存在)
有人建议我从中删除
$。

$.notificationHub.client.updateDatos = function () {
        cargarDatos();
};
为了避免第一个错误,它可以工作,但是当我加载页面时,
cargarDatos()
from
$.connection.hub.start().done(函数()
正确部署,但是当我在数据库中添加新记录时,什么也没有发生


我在这段代码中犯了什么错误?

应该是
notificationHub.client
而不是
$.notificationHub.client
。因此,请按如下方式编写
enlace.js
代码:

var notificationHub = $.connection.genteHub;

$.connection.hub.start().done(function () {
     cargarDatos();
});

notificationHub.client.updateDatos = function () { // not $.notificationHub, its notificationHub
        cargarDatos();
};

function cargarDatos() {
        $.ajax({
            url: "/Home/lista",
            method: "GET",
            contentType: "application/json",
            success: function (respuesta2) {
                console.log("Respuesta", respuesta2);

       }
    });
}
[HttpPost]
public ActionResult YourAddRecordMethod(YourRecord yourRecord)
{
    // Your adding record code here

    HubContext context = GlobalHost.ConnectionManager.GetHubContext<GenteHub>();
    context.Clients.All.updateDatos();
}
当我在数据库中添加一条新记录时,什么也没有发生

每当您将记录添加到数据库中时,它不会自动调用。您必须在将记录添加到数据库后手动调用它,如下所示:

var notificationHub = $.connection.genteHub;

$.connection.hub.start().done(function () {
     cargarDatos();
});

notificationHub.client.updateDatos = function () { // not $.notificationHub, its notificationHub
        cargarDatos();
};

function cargarDatos() {
        $.ajax({
            url: "/Home/lista",
            method: "GET",
            contentType: "application/json",
            success: function (respuesta2) {
                console.log("Respuesta", respuesta2);

       }
    });
}
[HttpPost]
public ActionResult YourAddRecordMethod(YourRecord yourRecord)
{
    // Your adding record code here

    HubContext context = GlobalHost.ConnectionManager.GetHubContext<GenteHub>();
    context.Clients.All.updateDatos();
}
[HttpPost]
公共行动结果YourAddRecordMethod(YourRecord YourRecord)
{
//您正在此处添加记录代码
HubContext context=GlobalHost.ConnectionManager.GetHubContext();
context.Clients.All.updateDataos();
}

无法读取未定义的属性“client”
。那么您在哪里访问客户端?
$.notificationHub.client
…所以
$。notificationHub
未定义。您是指
notificationHub
吗?@FrankerZ是的,在那一行中是第一个错误。我以那种方式拥有.js文件,但
cargarDatos()
在start中,控制台中没有显示任何内容。我没有任何保存记录的方法,我直接在SQL SERVER(SSMS)中添加了一条新记录,希望在SSMS中添加一条新记录时,集线器可以更新或执行我期望的操作(同样,我不知道这是否可行)不,不!当您使用SSMS将记录添加到SQL server中时,Signal怎么知道?“我有这样的.js文件,但开始中的cargarDatos()在控制台中没有显示任何内容”-您能给我团队查看器id并通过检查吗?1 063 653 658/5211