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

MVC#多个ajax请求的处理,如何管理?,ajax,asp.net-mvc,c#-4.0,Ajax,Asp.net Mvc,C# 4.0,我有一个自动完成字段搜索的每一个点击,我让它发送请求每500毫秒 但有时搜索控制器会在大约5秒钟后应答。问题是每个请求仍然在堆栈中,即使客户端不再搜索,所有请求都将完成 这使得客户机等待基于ajax的进一步操作,直到完成之前的所有请求。 我试图实现的解决方案是在ajax中使用.abort()方法: var currentRequest =null; function keyUp(...){ if(currentRequest!=null){ currrentRequest.abort();

我有一个自动完成字段搜索的每一个点击,我让它发送请求每500毫秒

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

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

var currentRequest =null;
function keyUp(...){
if(currentRequest!=null){
  currrentRequest.abort();
}
currentRequest = $.get(...);
但尽管如此,在服务器端,控制器仍然接收到所有挂起的请求,这些请求被
.abort()
取消


是否有任何方法可以检测客户端连接状态以避免在服务器端处理请求?

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

实际上我自己并没有用过这个,但原则上我认为你可以实现你想要的


另一方面,您确实希望优化控制器中的代码,该代码需要大约5秒的时间才能返回值,在动态UI项(如自动完成)上具有如此大的延迟不会提供良好的用户体验。

您是否使用JavaScript库来实现自动完成等?重复?我正在使用自己的autocomplete@Tr1stan,这是一个不同的问题,因为我正在使用.abort()方法,它正在工作,但是,我还必须在服务器端取消请求,检测到它已从客户端中止,这是我的问题。