【问题标题】:Session Timeout Issue in ASP.Net MVCASP.Net MVC 中的会话超时问题
【发布时间】:2010-11-02 10:32:23
【问题描述】:

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

【问题讨论】:

  • 只是一个建议...我认为标题应该包含 .NET MVC2 而不是 C#
  • Phil - 按照建议进行更改!

标签: asp.net-mvc session-timeout


【解决方案1】:

弗拉兹,

我不知道您的应用中是否启用了 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

您当然可以将标题附加到您在上传电影时“点击”的操作。即按照 (*disclaimer - untested *!!):

// 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 会以设定的时间间隔使用部分视图 (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

任何一种方法都是可行的,但我“更喜欢”第二种方法,因为它稍微“更干净”

只是一些想法! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2015-12-19
    • 2011-08-12
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多