【发布时间】:2020-03-10 00:19:21
【问题描述】:
我有 web api,它是非异步的。
从那个 web api,我正在调用方法
SmtpClient.SendMailAsync(email);
此电子邮件已发送给相应的人,但下一个 Web api 请求获取失败。
public class TestController : ApiController
{
public TestController(TestService testService)
{
_testService = testService;
}
public IHttpActionResult Post(data)
{
_testService.SendEmail(data);
}
}
public class TestService
{
public async Task SendEmail(MailMessage email)
{
SmtpClient client = new SmtpClient();
client.SendMailAsync(email)
}
}
【问题讨论】:
-
通常还有一个非Async Method。在这种情况下,SendMail 而不是 SendMailAsync。
-
用
_testService.SendEmail(data).GetAwaiter().GetResult()替换_testService.SendEmail(data); -
@ravikumar:我不想等到电子邮件发送完毕,我想要一些行为,比如一发不可收拾。
-
@HemantMalpote:注意,
SmtpClient必须被处理掉。将其包装成using。 -
@Dennis:同意
标签: c# asp.net-web-api async-await