我在视图上有许多按钮,通过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');
}
}
});
当它仍在运行上一次呼叫时尝试击中控制器时似乎只是一个问题?
答案 0 :(得分:0)
假设您在服务器端使用ASP.NET MVC,很可能会遇到ASP.NET会话锁。
默认情况下,对会话的访问限制为一次一个操作。这就是第二个请求被阻止的原因,只要第一个请求仍在运行。
要解决此问题,您可以使用控制器的SessionState
属性,将访问模式设置为只读,从而允许并发会话访问:
[SessionState(SessionStateBehavior.ReadOnly)]
public class HomeController : Controller
{
....
会话状态行为的可能值可在MSDN documentation。
中找到