Jquery 当前一个调用仍在运行时,通过MVC控制器进行第二次单击时,AJAX调用不会返回

Jquery 当前一个调用仍在运行时,通过MVC控制器进行第二次单击时,AJAX调用不会返回,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我在一个视图上有许多按钮,它们通过jquery和ajax调用同一个控制器,第一次按下按钮就会触发ajax并调用控制器MVC,但是在此期间单击另一个按钮会导致控制器被触发,但不会由ajax返回/处理 $.ajax({ url: '/Downloads/RequestDownload/', type: 'post', data: { parameter1: obj.data('ou'), parameter2: obj.data('asset'), p

我在一个视图上有许多按钮,它们通过jquery和ajax调用同一个控制器,第一次按下按钮就会触发ajax并调用控制器MVC,但是在此期间单击另一个按钮会导致控制器被触发,但不会由ajax返回/处理

$.ajax({
        url: '/Downloads/RequestDownload/',
        type: 'post',
        data: { parameter1: obj.data('ou'), parameter2: obj.data('asset'), parameter3: obj.data('report-type'), parameter4: obj.data('appservice'), parameter5: obj.data('filetype') },
        cache: false,
        success: function (data) {
            if(data.indexOf('ERROR') ==-1)
            {
                obj.addClass('blue');
                obj.removeClass('red');
                window.location = '/Downloads/DownloadReport/' + data;
                obj.html(ohtml);
                obj.removeClass('disabled');
            }
        }
});

只有当它在运行前一个调用的同时尝试点击控制器时,才可能出现问题?

假设您在服务器端使用ASP.NET MVC,则很可能遇到ASP.NET会话锁

默认情况下,对会话的访问一次仅限于一个操作。这就是为什么只要第一个请求还在运行,第二个请求就会被阻止

要解决此问题,您可以使用控制器的SessionState属性,将访问模式设置为只读,从而允许并发会话访问:

[SessionState(SessionStateBehavior.ReadOnly)]
public class HomeController : Controller
{
    ....
会话状态行为的可能值可在中找到


一种高级方法是配置。是否使用ASP.NET MVC?或者您在服务器端使用什么?问题很可能就在那里。@tereško:你确定这确实是ASP.NET MVC吗?我仍然不确定。@Codo约占99%。由于用户的历史记录和驼峰大小写URL的使用。遗憾的是,这些人不理解架构模式和框架之间的区别。我想市场部会称之为胜利。