【问题标题】:SignalR error Cannot implicitly convert type 'System.Threading.Tasks.Task<object>' to 'string'SignalR 错误无法将类型“System.Threading.Tasks.Task<object>”隐式转换为“字符串”
【发布时间】:2016-11-15 05:42:19
【问题描述】:

我正在尝试从我的 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;
                    }
                }
            }

【问题讨论】:

    标签: javascript c# signalr


    【解决方案1】:

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

    如果您想从客户端返回值,您必须手动使用正确的值调用集线器,并使用您自己的消息 ID 匹配调用者。

    documentation

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

    【讨论】:

    • 谢谢,你知道我可以阅读一个教程来帮助我使用信号器返回值吗?
    • @JoshB 对不起,我没有。不久前我自己推出了自己的产品,并不太难。
    • @JoshB 请注意,other 方向(将值从集线器返回到客户端)确实有效。
    • 好的,感谢您提供的所有信息,我将查找与呼叫者或其他匹配的信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多