Daten vom Server abrufen, ohne das Sitzungszeitlimit zu verlängern

8

Gibt es in ASP.net irgendwelche Möglichkeiten, Daten vom Server abzurufen, ohne das Sitzungszeitlimit zu verlängern? Dies muss alle paar Minuten ohne Benutzerinteraktion durchgeführt werden, bis die Seite geschlossen wird.

Zusätzlicher Kontext, wie gewünscht:

Die Seiten in meiner Webanwendung müssen den Server alle paar Minuten abfragen, um nach einer bestimmten Bedingung zu suchen (in diesem Fall ist eine Notfallwartung für 30 Minuten geplant). Wenn die Bedingung erfüllt ist, zeigt die Seite dem Benutzer eine Nachricht an. Wenn die Bedingung falsch ist, muss nichts passieren.

Wie ich es verstehe, setzen Postbacks auf den Server die Zeit bis zum Ablauf der Sitzung zurück. Wir möchten nicht, dass die Sitzung bei jedem Abruf der Seite durch den Server erweitert / aktualisiert / zurückgesetzt wird. Ich brauche eine Möglichkeit, den Server automatisch abzufragen, ohne das Session-Timeout zurückzusetzen.

Danke.

    
Brian Beckett 13.01.2011, 19:37
quelle

3 Antworten

3

Wenn Sie im Kontext einer langwierigen HTTP-Anfrage nach einem HTTP-Timeout suchen, sehen Sie sich web.config <httpRuntime executionTimeout="99999"></httpRuntime> an, wobei executionTimeout in Sekunden ist, denke ich, Ссылка .

Wenn es wirklich nur ein Zeitlimit für Sitzungen gibt, ist es möglich, den Server unter derselben Benutzersitzung asynchron zu pingen, während der langwierige Prozess ausgeführt wird?

Bearbeiten : Wenn Sie Ihren Webdienst "Website-Wartung" in einen Dienst außerhalb des Bereichs für den Sitzungsstatus des normalen Teils der Website einteilen, können Sie ihn entsprechend Ihrer Bearbeitung so oft aufrufen, wie Sie möchten. Wenn Sie zu diesem Zeitpunkt beispielsweise einen ASMX-Webdienst auf Ihrer aktuellen Website verwenden, partitionieren Sie ihn einfach in eine separate Anwendung, z. B. als ein Verzeichnis Ihrer Anwendung, so dass es zu derselben Domäne gehört. Ich kann mir vorstellen, dass das gut funktionieren würde.

Ich bin mir nicht sicher, welchen Webdiensttyp Sie gerade aufrufen (ASMX, WCF usw.) oder ob der Webdienst, den Sie gerade aufrufen, sich in derselben Anwendung wie Ihr ASPX befindet Anwendungsseiten.

    
Shan Plourde 13.01.2011, 19:43
quelle
1

Erstens: Wenn eine Abfrage über das Sitzungszeitlimit hinaus ausgeführt wird, liegt ein schwerwiegendes Problem bei der Abfrage vor. Ich würde lieber die Abfrage zuerst beheben. Wenn Sie dies dennoch mit der Sitzung tun möchten, versuchen Sie Folgendes:

Sie können eine Dummy.aspx in Ihrer App haben und dann ein Bildelement seine URL alle 15 Minuten aktualisieren lassen wie:

%Vor%

Auf diese Weise haben Sie keinen Einfluss auf das Sitzungszeitlimit auf globaler Ebene.

    
Chandu 13.01.2011 19:48
quelle
-2

Verwenden Sie einen JavaScript-Timer, der einen AJAX-Anruf auslöst. In Ihrem PageLoad -Ereignis geben Sie also eine javascript setInterval(functiontocall(), timetowait); -Funktion aus. Die Methode, die Sie aufrufen, ist der AJAX-Treffer für einen Webdienst, der Ihre Abfrage durchführt.

Dies wird sich selbst aufrufen, bis der Benutzer die Seite schließt.

Sitzungen werden nicht von AJAX-Treffern aktualisiert.

    
Refugee 13.01.2011 20:03
quelle