MVC c#多个ajax请求处理,如何管理?

时间:2012-02-10 07:03:38

标签: ajax asp.net-mvc c#-4.0

我有一个自动填充字段搜索每个匹配,我让它每500毫秒发送一次请求。

但有时搜索控制器会在大约5秒后回答。问题是每个请求仍然在堆栈中,即使客户端不再搜索,所有请求也将完成。

这使得客户端等待基于ajax的进一步操作,直到所有先前的请求都将完成。 我试图实现的解决方案是在ajax中使用.abort()方法:

var currentRequest =null;
function keyUp(...){
if(currentRequest!=null){
  currrentRequest.abort();
}
currentRequest = $.get(...);

但是尽管如此,在服务器端,控制器仍然收到所有待处理的请求,这些请求已被.abort()取消。

有没有办法检测客户端连接状态以避免处理请求服务器端?

1 个答案:

答案 0 :(得分:0)

在服务器端代码中,您可以使用Response.IsClientConnected属性来确定请求是否已在客户端中止。因此,您可以释放当前用于不再需要的请求的资源。

我自己并没有真正使用它,但原则上我认为你可以实现你所追求的目标。

另一方面,你真的想优化你的控制器中大约5秒钟返回一个值的代码,在动态UI项目(如自动完成)上有这么多的延迟是不会给出一个良好的用户体验。