Signalr 从信号器核心集线器中的异步方法返回
我有一个ASP.NETCore2.2WebAPI。在它里面我用的是信号器。在我的hub中,我需要将消息保存到数据库,因此我得到了DbContext的一个实例,因为我调用了DbContext的savechangessync()方法,所以我需要使该方法异步。那么,从Signalr 从信号器核心集线器中的异步方法返回,signalr,asp.net-core-webapi,signalr-hub,Signalr,Asp.net Core Webapi,Signalr Hub,我有一个ASP.NETCore2.2WebAPI。在它里面我用的是信号器。在我的hub中,我需要将消息保存到数据库,因此我得到了DbContext的一个实例,因为我调用了DbContext的savechangessync()方法,所以我需要使该方法异步。那么,从 public Task SendMessageToAll(string message) { return Clients.All.SendAsync("ReceiveMessage", message); } 我现在有
public Task SendMessageToAll(string message)
{
return Clients.All.SendAsync("ReceiveMessage", message);
}
我现在有
public async Task SendMessageToAll(string message)
{
using (var scope = _serviceProvider.CreateScope())
{
var dbContext = scope.ServiceProvider.GetRequiredService<DbContext>();
Message newMessage = new Message()
{
Body = message,
Timestamp = DateTime.Now
};
dbContext.Messages.Add(newMessage);
await dbContext.SaveChangesAsync();
}
return Clients.All.SendAsync("ReceiveMessage", message);
}
公共异步任务SendMessageToAll(字符串消息)
{
使用(var scope=\u serviceProvider.CreateScope())
{
var dbContext=scope.ServiceProvider.GetRequiredService();
Message newMessage=新消息()
{
Body=消息,
Timestamp=DateTime.Now
};
dbContext.Messages.Add(newMessage);
等待dbContext.saveChangesSync();
}
返回Clients.All.sendsync(“ReceiveMessage”,message);
}
但是,现在我得到了这个错误:
由于'ChatHub.SendMessageToAll(string)'是返回'Task'的异步方法,因此返回关键字后面不能跟有对象表达式。您是否打算返回“任务”?
这是有道理的,但我不知道如何修复它。有什么想法吗?按如下方式更改代码: