ASP.net中是否有任何方法可以在不延长会话超时的情况下从服务器获取数据?这需要每隔几分钟完成,无需用户交互,直到页面关闭。
根据要求提供其他背景信息:
我的webapp中的页面需要每隔几分钟轮询服务器以检查特定条件(在这种情况下,紧急维护计划为30分钟时间)。当条件为真时,页面将向用户显示消息。当条件为假时,不需要发生任何事情。
据我了解,回发到服务器会重置会话到期之前的时间。我们不希望会话被扩展/刷新/重置/每次页面轮询服务器时都是这个词。我需要一种方法来自动轮询服务器而不重置会话超时。
感谢。
答案 0 :(得分:4)
如果您在冗长的HTTP请求的上下文中询问,以便您希望防止HTTP超时,请查看web.config的<httpRuntime executionTimeout="99999"></httpRuntime>
,其中executionTimeout以秒为单位,我认为{{3 }}。
如果它确实只是会话超时问题,是否可以在同一用户会话下异步ping服务器,而冗长的进程正在运行?
修改强>: 根据您的编辑,如果您将“网站维护”Web服务划分为站点正常部分的会话状态范围之外的服务,则可以根据需要随时调用它。例如,如果您当前在当前网站中使用ASMX Web服务,只需将其分区为单独的应用程序,可能作为应用程序的目录,以便它属于同一个域。我想这样会好起来的。
我不确定您此时正在调用的Web服务类型(ASMX,WCF等),或者您此时调用的Web服务与ASPX位于同一应用程序中申请页面。
答案 1 :(得分:1)
首先,如果查询运行超出会话时间限制,则查询存在严重问题。我宁愿先修复查询。 但是,如果您仍想使用会话执行此操作,请尝试以下操作:
您可以在应用中使用Dummy.aspx,然后让图片元素每隔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 :(得分:-2)
使用启动AJAX调用的javascript计时器。因此,在PageLoad
事件中,请回显javascript setInterval(functiontocall(), timetowait);
函数。您调用的方法将是对执行查询的Web服务的AJAX命中。
这会自动调用,直到用户关闭页面。
会话不会从AJAX点击中刷新。