我有一个ASP .Net Core 2.2 Web API。我在其中使用SignalR。在我的中心中,我需要将消息保存到数据库,因此我要获取DbContext的实例,并且由于我正在调用DbContext的SaveChangesAsync()方法,因此需要使该方法异步。因此,来自
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);
}
但是,现在出现此错误:
由于'ChatHub.SendMessageToAll(string)'是返回'Task'的异步方法,因此return关键字后不能跟随对象表达式。您是否打算返回“任务”?
这有道理,但我不确定如何解决。有什么想法吗?
答案 0 :(得分:0)
按如下所示更改代码:
return Clients.All.SendAsync("ReceiveMessage", message);await Clients.All.SendAsync("ReceiveMessage", message);