我有一个ajax POST,它将CSV文件发送到服务器。我有signalR 3工作,通过进度条告知客户在哪里通过16000个奇数记录进行处理。它适用于小型文件,处理完成时间不到两分钟。任何时候处理都需要更长的时间。
我看了here而不是我需要的......和
我尝试使用" .timeout:600000"添加延长超时在POST但但不起作用。它仍然超过2分钟,但处理工作,数据库仍然更新,它甚至尝试发回那些新的记录。
我可以使用SignalR服务器调用来保持会话活动吗? (如何使用SignalR 3)?
我可以使用AJAX吗?
我需要等待超过8分钟以避免超时。
AJAX代码:
//On button click POST file and signalR connection Id back to controller.
$('#SubmitFile').click(function (e) {
e.preventDefault(); // <------------------ stop default behaviour of button
var url = "/SuburbsAndPostcodesAdmin/FileIndexView";
var connId = $.connection.hub.id;
var fd = new FormData();
fd.append('File', $("#txtFileUpload")[0].files[0]);
fd.append('connId', connId);
//Post back the file with the SignalR Id.
$.ajax({
type: "POST",
url: url,
data: fd,
processData: false,
contentType: false,
success: function (result) {
//display the results in a partial view.
$("#DisplayResults").html(result);
},
error: function (xhr, status, error) {
alert(xhr.responseText);
},
});
});
SignalR客户端代码:
// Reference the auto-generated proxy for the hub.
var progress = $.connection.progressHub;
// Start the connection.
$.connection.hub.start().done(function () {
connectionId = $.connection.hub.id;
$("#SubmitFile").removeAttr("disabled");
$("#initialise").html("<h4>" + "Ready to upload" + "</h4>" + "<br /> " + "<br />");
});
更新进度条:
//Send from server to the client process current notification.
progress.client.notifyProgress = function (processedRecords, newRecords, percentage) {
$("#NoOfRecordsProcessedValue").text(processedRecords);
$("#NoOfNewRecordsFoundValue").text(newRecords);
$('.progress-bar')
.css('width', percentage + '%')
.attr('aria-valuenow', percentage);
if (percentage > 5) {
$("#workDone").text(percentage + "%");
}
};