ASP.Net MVC中的会话超时问题

时间:2010-11-02 10:32:24

标签: asp.net-mvc session-timeout

在我的应用程序用户上传电影和电影的大小可以在100MB左右或更多。因此,我怀疑如果任何用户连接速度较慢,可能需要数小时,如果需要花费很多时间,那么我的应用程序会话将会过期。我该怎么做才能解决这个问题?我的应用程序在带有C#的ASP.Net MVC2上,并托管在Windows Server 2008上

1 个答案:

答案 0 :(得分:0)

FRAZ,

我不知道您的应用是否启用了javascript。如果你这样做,你可以触发一个setInterval方法直到电影成功上传(即上传完成后,触发$ ajax完成功能来停止时间。

无论如何,这是一个粗略的想法:

javascript - 在javascript上传功能中调用:

function keepMeAlive(imgName) {
    myImg = document.getElementById(imgName);
    if (myImg) myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random());
}
callbackID = window.setInterval("keepMeAlive('keepAliveIMG')", 100000);

html(文档中的任何旧图片):

<img id="keepAliveIMG" width="1" height="1" src="http://www.some.url/someimg.gif?" />

在图像完成功能中,添加:

clearInterval(callbackID);

另见,见:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=453&AspxAutoDetectCookieSupport=1

当您上传电影时,您可以将标题添加到您“点击”的操作中。即(* 免责声明 - 未经测试的* !!):

// don't know what your action signiture is like
public ActionResult AddMovie()
{
    Response.AddHeader("Refresh", Convert.ToString(((Session.Timeout * 60) - 10)));
    return PartialView("UpdateInProgress");
}

然后在页面内部,有一个div,它以设定的间隔用partialview(UpdateInProgress)更新。当然,可能会更新整个页面,而不仅仅是谨慎的div,但你希望能够了解这些可能性。

见:

http://tech.tiffanyandjeremy.com/Articles/Reusable-embedded-keep-session-alive-with-HtmlHelper-for-ASP-NET-MVC-1-0-csharp

或:

http://naspinski.net/post/Automatically-refresh-your-users-Session-behind-the-scenes-using-jQuery-and-AspNet.aspx

要么appraoch是可行的,所以我更喜欢'第二个,因为它稍微'清洁'

只是一些想法! :)