ASP.NET MVC 2取消异步操作

时间:2010-06-08 21:18:13

标签: asp.net-mvc-2 asynchronous

using an asynchronous controller的MSDN文档提到在您想要为用户提供取消请求的方法时选择异步控制器。

但是,我找不到任何与实际允许用户取消异步请求相关的文档。有没有办法向ASP.NET和/或ASP.NET MVC框架表明应该取消请求?

2 个答案:

答案 0 :(得分:2)

如果您调用的异步API提供了取消请求的方法(通过.NET 4的CancellationToken类或通过CancelAsync方法),则必须调用它来取消正在进行的任何异步操作。否则,调用AsyncManager.Finish(通过控制器的AsyncManager属性)强制MVC框架立即调用您的XxCompleted方法。请注意,AsyncManager.Finish实际上只是在您需要避免没有其他取消方式的请求时(例如在没有CancellationToken的情况下调用BeginXx / EndXx)并且在其他情况下不会总是有效。

答案 1 :(得分:1)

默认超时为45 seconds,因此如果没有响应,服务器将取消该超时。 他们不允许用户取消请求取消一个http请求,你正在创建另一个http请求,这不是一个正确的方法。