Die Verhinderung einer ASP.NET Session-Timeout bei der Verwendung von Silverlight
Ich Schreibe ein Programm, das sowohl ein ASP.NET Konfiguration-system-und Silverlight-Anwendungen. Die meisten Benutzer werden weiterhin auf der Silverlight-Seite und nicht zu besuchen ASP.NET Website außer für die Anmeldung, etc.
Das problem ist, ich muss die Sitzung aktiv bleibt, für die Authentifizierung, aber der session-timeout, selbst wenn der Benutzer mithilfe der features von silverlight-Anwendung.
Irgendwelche Ideen?
- Können Sie verwenden Sie einen Timer ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf die Seite mit dem silverlight-Steuerelement, könnten Sie setup ein javascript-timer und ein ajax-Aufruf ein Http-Handler (.ashx) alle 5 Minuten zu halten, die Sitzung aktiv. Werden Sie sicher, dass Ihre Handler Klasse implementieren
IRequiresSessionState
.Empfehle ich den Hf, weil es einfacher ist, die Kontrolle der Antwort-text, der zurückgegeben wird, und es ist leichter dann eine aspx-Seite.
Werden Sie auch brauchen, um die Antwort-cache richtig zu stellen Sie sicher, dass der browser die ajax-call jedes mal.
UPDATE
Hier der Beispielcode für einen HttpHandler
Dann, wenn Sie jQuery verwenden, können Sie dieses auf Ihrem Rechner in der aspx-Seite
Ist das interval in Millisekunden, also meine Probe wird ping alle 5 Sekunden, werden Sie wahrscheinlich wollen, dass es eine größere Anzahl. Fiddler ist ein großes Werkzeug für das Debuggen von ajax-calls, wenn Sie es nicht verwenden, starten.
Ich habe eigentlich ein ziemlich Cooler hack, die im wesentlichen eingebettet in einem iframe auf der gleichen Seite wie die silverlight-Anwendung. Der iframe enthält eine aspx-Webseite aktualisiert sich alle (Session.Timeout - 1) Minuten. Das hält die session am Leben, wie lange die silverlight-app geöffnet ist.
Dazu:
Erstellen asp.net -Seite namens "KeepAlive.aspx". Im head-Bereich der Seite, fügen Sie diese:
In der code-behind-Datei, fügen Sie diese:
Nun, auf der gleichen Seite wie die silverlight-app, fügen Sie diese:
Nun die asp.net Sitzung bleibt aktiv, während sich die silverlight-Anwendung verwendet wird!
Den ajax-ping /HttpHandler Ansatz ist gut, aber die JQuery $.Holen Sie sich Funktion erwartet wird ein json-Ergebnis und wirft einen javascript parse error.
Modifizierte ich die Ping HttpHandler zurück zu kehren "{}" statt "OK" und das war besser.