我在我的 ASP.NET MVC 4 网站中创建了一个 Web API 控制器来专门发送电子邮件,以便我可以为此目的使用它并最终将其提供给其他消费者(移动设备等)。
一切正常,但我想异步使用它,尽管它不是那样工作的,我的网站会阻塞,直到工作完成。
我有一个常规控制器,我在其中调用一个调用 API 的辅助类。
控制器代码:
[HttpPost]
public async Task<ActionResult> ContactUs(ContactUsModel model)
{
ExternalApiCalls extApi = new ExternalApiCalls();
await extApi.PostContactUs(model).ConfigureAwait(false);
return RedirectToAction("ContactUsSuccess", "Account");
}
助手类代码:
public class ExternalApiCalls
{
public HttpClient client { get; set; }
public ExternalApiCalls()
{
client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:10239/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
}
public async Task PostContactUs(ContactUsModel model)
{
try
{
var response = await client.PostAsJsonAsync("api/WAPIMail", model).ConfigureAwait(false);
}
catch (HttpRequestException ex)
{
}
catch (System.FormatException)
{
}
finally
{
}
}
}
Web API 控制器:
public class WAPIMailController : ApiController
{
public void PostContactUs(ContactUsModel model)
{
// Send Email Here
}
}
非常感谢你的帮助