Signalr 从信号器核心集线器中的异步方法返回

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); } 我现在有

我有一个ASP.NETCore2.2WebAPI。在它里面我用的是信号器。在我的hub中,我需要将消息保存到数据库,因此我得到了DbContext的一个实例,因为我调用了DbContext的savechangessync()方法,所以我需要使该方法异步。那么,从

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'的异步方法,因此返回关键字后面不能跟有对象表达式。您是否打算返回“任务”?


这是有道理的,但我不知道如何修复它。有什么想法吗?

按如下方式更改代码:

return Clients.All.SendAsync("ReceiveMessage", message); await Clients.All.SendAsync("ReceiveMessage", message); 返回Clients.All.sendsync(“ReceiveMessage”,message); 等待Clients.All.SendAsync(“ReceiveMessage”,message);