我有一个应该执行以下操作的MVC 4应用程序:
1-要求用户输入他们的电子邮件地址(操作1 - >视图1)
2-显示接收请求的确认(操作2 - >视图2) - 用户应该可以在此处关闭网页。
3-在服务器上启动长进程(操作3),完成后,通过电子邮件通知用户。
我怎样才能做到这一点?我需要在Action 2上创建一个新线程,我是否正确?
谢谢!
答案 0 :(得分:3)
考虑使用.net 4.5中包含的任务和等待。显示的异步方法示例:
public async Task<List<Gizmo>> GetGizmosAsync()
{
var uri = Util.getServiceUri("Gizmos");
using (HttpClient httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(uri);
return (await response.Content.ReadAsAsync<List<Gizmo>>());
}
}
完整的文章可以在这里找到:http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4
答案 1 :(得分:2)
我会将Action 2中的消息放入某种消息队列中。然后,我有一个后台进程(理想情况下在不同的服务器上)处理邮件并发送电子邮件。这样,您的Web服务器就可以专注于提供Web页面和Web服务,而不是为长时间运行的任务提供服务。