Сетка ядра кендо связана с ошибкой signalR: не найден клиентский метод с именем read - PullRequest
0 голосов
/ 27 июня 2019

У меня есть .Net Core 2.2 Server и клиент с Kendo UI Core. Я могу заставить начальное чтение работать с клиента, чтобы загрузить сетку, связанную с signalR, но когда сервер отправляет сообщение всем клиентам, использующим SignalR, сетка не обновляется, и вместо этого я вижу предупреждение:

"Предупреждение. Не найден клиентский метод с именем read".

Я просмотрел все примеры онлайн, включая https://www.telerik.com/forums/signalr-datasource-with-server-sorting-filtering https://demos.telerik.com/aspnet-core/grid/signalr

мой код полностью соответствует для соответствующих разделов, включая разделы Startup.cs.

client index.cshtml:

<script src="~/signalr/signalr.js"></script>
<script>
    var url = "https://localhost:44000/hubs/status";
    var hub = new signalR.HubConnectionBuilder()
        .configureLogging(signalR.LogLevel.Information)
        .withUrl(url)
        .build();

    var hubStart = hub.start();
</script>

<div class="signalr-grid-container">

@(Html.Kendo().Grid<Model>
    ()
    .Name("grid")

    .Columns(columns =>
    {
        columns.Bound(c => c.Status).Title("Status"));

    })
    .DataSource(dataSource => dataSource
        .SignalR()
        .AutoSync(true)
        .ServerFiltering(true)
        .ServerPaging(true)
        .ServerSorting(true)
        .PageSize(10)
        .Transport(tr => tr
            .Promise("hubStart")
            .Hub("hub")
            .Client(c => c
                .Read("read") 
            )
            .Server(s => s
                .Read("read")
            )
        )
        .Schema(schema => schema
            .Data("Data")
            .Total("Total")
            .Aggregates("Aggregates")
            .Model(model =>
            {
                model.Id(p => p.ID);
            })
        )
    )
    .Groupable(true)
    .Sortable()
    .Filterable()
    .Pageable(pager => pager.Refresh(true).PageSizes(new int[] { 10, 20, 50, 100 }))

)
</div>

Код сервера:

private async Task UpdateUsers()
{
     await _hub.Clients.All.SendAsync("read");
}

Кажется, что серверная сторона работает нормально, я могу пройти и увидеть, что она отправляет сообщение.

На стороне клиента может возникнуть проблема, поскольку я получаю эту ошибку на стороне клиента через отладчик Chrome: «Предупреждение: не найден клиентский метод с именем read».

Что я также нахожу странным, так это то, что данные загружаются изначально, но обновленные операции чтения не запускаются.

Буду признателен за любую помощь.

...