async-await在asp.net核心web api(不是MVC)



我有这个http post控制器方法插入一个新的文本消息到数据库。这里我想把这个方法改成async方法。我试过了,但还是做不到。有人能帮我吗?:)

这是我的控制器方法

[HttpPost]
public ActionResult<Message> Create(Message message)
{
var duplicatemessage = _messageService.DuplicateMessage(message.Text);
if (duplicatemessage == null)
{
_messageService.Create(message);
return CreatedAtRoute("Api", new { id = message.Id.ToString() }, message);
}
else
{
return BadRequest(new { message = "Text Already Exist" });
}
}

这些是与控制器post方法相关的服务类方法

public Message DuplicateMessage(string Text)
{
return _messages.Find<Message>(message => message.Text == Text).FirstOrDefault();
}
public Message Create(Message message)
{
_messages.InsertOne(message);
return message;
}

try this:


public async Task<ActionResult<Message>> Create(Message message)
{
var duplicatemessage =  await _messageService.DuplicateMessage(message.Text);
if (duplicatemessage == null)
{
_messageService.Create(message);
return CreatedAtRoute("Api", new { id = message.Id.ToString() }, message);
}
else
{
return BadRequest(new { message = "Text Already Exist" });
}
}

public async Task<Message> DuplicateMessage(string Text)
{
return await _messages.Set<Message>().Where(message => message.Text == 
Text).FirstOrDefaultAsync();
}

如果你想实现异步方法到你的控制器(我假设这是你想要的)。您必须首先创建函数,DuplicateMessage或async。您可以通过将返回类型设置为task并在任务中运行它来实现。

最新更新