2011-01-13 57 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點擊刷新。

相關問題