【发布时间】:2021-10-05 22:20:21
【问题描述】:
大家好,提前感谢您的帮助。我正在使用 .Net Core C# 和 Twilio api。我在控制器上使用了一个 Twilio 示例,如下所示:
public async Task<TwiMLResult> InboundSMS(SmsRequest request, int numMedia)
{ return TwiML(messagingResponse); }
Intellisense 告诉我“异步方法缺少 await 运算符,将同步运行。考虑使用 await 运算符来等待非阻塞 api 调用。”控制器是由 Twilio api 调用的端点。端点依次处理发布的数据,然后执行各种业务逻辑例程。老实说,我真的不确定这告诉我什么,我不知道我应该如何(或什至)纠正这个问题。此外,由于该端点会产生多个业务逻辑例程,因此运行了这么长时间,我想了解我在做什么。任何帮助将不胜感激。
【问题讨论】:
-
我不想听起来刺耳,但是如果你不理解那个错误信息,你需要花一两个小时理解async/await才能使用它,否则你会遇到更严重的问题与他们的滥用。即使是经验丰富的程序员也不总是正确地异步/等待。该消息告诉您
return TwiML(messagingResponse)的正确语法是return await TwiML(messagingResponse)。如果这给您一个关于 noGetAwaiter的错误,那么 TwiML 方法不是异步的,您的 InboundSMS 方法也不应该是异步的。 -
感谢您的回复。一点都不苛刻。我只需要确信知道错误消息返回 await TwiML(messagingResponse) 告诉我没有 GetAwaiter。错误的代码示例,但我应该知道得更好。再次感谢。
-
第一条消息,缺少等待操作符,将同步运行实际上只是一个警告/提醒,您可能忘记了
await关键字。也就是说,如果TwiML方法不是异步的,您可以放心地忽略警告并将async关键字也留在那里。当使用异步方法与非异步方法混合使用时,这会令人困惑和草率,但有时是必要的。
标签: c# .net asp.net-core-mvc