如何在文件上传时保持会话活动?

时间:2014-07-02 21:12:30

标签: asp.net session fine-uploader

我有一个允许用户上传音频文件的应用程序。在一些非常大的文件(1-2GB)上,我遇到了用户会话/身份验证将超时的问题,因此当文件完成上传(成功完成)后,用户将被迫再次登录。

我在前端使用名为FileUploader的第三方工具,在服务器端使用ashx来处理传入文件。

是否有人建议如何在文件上传时保持会话/身份验证超时?基本上我希望将文件上传的时间视为用户正在积极使用该网站。

1 个答案:

答案 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);
}

Reference