ASP.NET MVC 4 Web サイト内に 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
}
}
助けてくれてどうもありがとう