SignalR 错误无法将类型 'System.Threading.Tasks.Task<object>' 隐式转换为 'string'
SignalR error Cannot implicitly convert type 'System.Threading.Tasks.Task<object>' to 'string'
我正在尝试从我的 c# 集线器 class 调用一个方法,但是当我尝试 return 来自 javascript 代码的字符串时,我得到一个 System.Threading.Tasks.Task而不是字符串。我想知道如何将 javascript 方法编辑为 return 实际字符串。
这里是中心 class:
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 不支持从客户端到集线器的 return 值。由 Clients.All 编辑的任务 return 将在调用所有客户端后完成。
如果您想要来自客户端的 return 值,您将必须使用正确的值手动调用集线器,并使用您自己的消息 ID 匹配调用者。
You can't get a return value from a client method; syntax such as int
x = Clients.All.add(1,1) does not work.
我正在尝试从我的 c# 集线器 class 调用一个方法,但是当我尝试 return 来自 javascript 代码的字符串时,我得到一个 System.Threading.Tasks.Task而不是字符串。我想知道如何将 javascript 方法编辑为 return 实际字符串。
这里是中心 class:
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 不支持从客户端到集线器的 return 值。由 Clients.All 编辑的任务 return 将在调用所有客户端后完成。
如果您想要来自客户端的 return 值,您将必须使用正确的值手动调用集线器,并使用您自己的消息 ID 匹配调用者。
You can't get a return value from a client method; syntax such as int x = Clients.All.add(1,1) does not work.