SignalR 错误 无法将类型“System.Threading.Tasks.Task”隐式转换为“字

本文关键字:object 转换 Tasks 错误 类型 SignalR Threading System Task | 更新日期: 2023-09-27 17:56:32

我正在尝试从我的 c# hub 类调用一个方法,但是当我尝试从 javascript 代码返回一个字符串时,我得到一个 System.Threading.Tasks.Task 而不是一个字符串。我想知道如何编辑 javascript 方法以返回实际字符串。

下面是集线器类:

public String getMessage(int id)
    {
        var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
        var s = hubContext.Clients.All.getMessage(id);

        return s;
    }

JavaScript:

chat.client.getMessage = function (id) {
                for (i = 0; i < messageArr.length; i++) {
                    if (messageArr[i].ID == id) {
                        var s = messageArr[i].ID + messageArr[i].Name + messageArr[i].Content;
                        window.alert(s);
                        return s;
                    }
                }
            }

SignalR 错误 无法将类型“System.Threading.Tasks.Task<object>”隐式转换为“字

SignalR 不支持从客户端返回到中心的值。Clients.All 返回的任务将在调用所有客户端后完成。

如果要从客户端返回值,则必须使用正确的值手动调用中心,并使用自己的消息 ID 匹配调用方。

查看文档

不能从客户端方法获取返回值;语法,如 int x = Clients.All.add(1,1) 不起作用。