我有一个允许用户上传音频文件的应用程序。在一些非常大的文件(1-2GB)上,我遇到了用户会话/身份验证将超时的问题,因此当文件完成上传(成功完成)后,用户将被迫再次登录。
我在前端使用名为FileUploader的第三方工具,在服务器端使用ashx来处理传入文件。
是否有人建议如何在文件上传时保持会话/身份验证超时?基本上我希望将文件上传的时间视为用户正在积极使用该网站。
答案 0 :(得分:1)
如何使用FineUploader的progress event并对每次触发进度时刷新会话的新WebService方法进行Ajax调用:
[System.Web.Script.Services.ScriptService]
public class SessionAlive : System.Web.Services.WebService
{
[WebMethod]
public void UpdateSession()
{
HttpContext.Current.Session["tempVariable"] = DateTime.Now;
}
}
或者您可以使用在上传开始时启动的超时:
$(document).ready(function() {
setTimeout(updateSession, 1000*60);//Timeout is 1 min
});
function updateSession() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "SessionAlive.asmx/UpdateSession",
data: "{}",
dataType: "json"
});
setTimeout(updateSession, 1000 * 60);
}