2011-01-13 61 views
8

ASP.net有没有任何方法可以从服务器获取数据而不会延长会话超时?这需要在没有用户交互的情况下每隔几分钟完成,直到页面关闭。从服务器提取数据而不延长会话超时

其他方面,如要求:

在我的web应用程序的页面需要轮询服务器每隔几分钟检查特定条件(预定30分钟的时间紧急维护,在这种情况下)。当条件成立时,页面会向用户显示一条消息。当条件不成立时,什么都不需要发生。

据我所知,回传到服务器重置时间,直到会话过期。我们不希望会话在每次页面轮询服务器时被扩展/刷新/重置/无论该字是什么。我需要一种方法来自动轮询服务器而不重置会话超时。

谢谢。

+0

也许我们需要多一点信息?您可以延长会话超时时间。 – Remy 2011-01-13 19:40:05

+1

AJAX调用Web服务不应该扩展用户的会话。 – Refugee 2011-01-13 20:47:19

+1

@Refugee:不应该或不?随意发表您的评论作为答案,因为它听起来像它可能是我正在寻找的答案! – 2011-01-13 21:10:12

回答

3

如果您在长时间HTTP请求的上下文中询问,以便您希望防止HTTP超时,请查看web.config的<httpRuntime executionTimeout="99999"></httpRuntime>,其中executionTimeout以秒为单位,我认为是http://msdn.microsoft.com/en-us/library/e1f13641(v=vs.71).aspx

如果它真的只是一个会话超时问题,是否有可能在同一用户会话下异步ping服务器,而冗长的进程正在运行?根据您的编辑 ,如果你的分区您“网站维护”网络服务进入该网站的正常部分的会话状态范围之外的服务,那么你可以尽可能经常叫它:

编辑你想。例如,如果您目前在当前网站中使用ASMX Web服务,则只需将其分割为单独的应用程序(可能是作为应用程序的目录),以使其位于同一个域中。我想这可以正常工作。

我不确定您此时调用的Web服务类型(ASMX,WCF等),或者即使您此时调用的Web服务与您的应用程序在同一个应用程序中ASPX应用程序页面。

1

首先,如果查询超出会话时间限制,那么查询存在严重问题。我宁愿先修复查询。 但是,如果你仍然想使用会话做到这一点,试试这个:

你可以在你的应用程序有一个Dummy.aspx,然后有一个像元刷新其URL每隔15分钟:

<img id="dummyImage" src="/Dummy.aspx" width=0 height=0/> 

<script type="text/javascript"> 
    var dummyImage = document.getElementById("dummyImage"); 
    setInterval(function(){ 
     dummyImage.src = "Dummy.aspx?_tmp=" + (Math.random() * 100000); 
    }, 900000); 
</script> 

这种方式不会影响全局级别的会话超时。

-2

使用启动AJAX调用的javascript定时器。所以在你的PageLoad事件中回显出一个javascript setInterval(functiontocall(), timetowait);函数。您调用的方法将是AJAX命中您的查询的Web服务。

这将继续调用自己,直到用户关闭页面。

会话不会从AJAX点击刷新。

相关问题