2010-08-20 3 views
3

Dans l'un de mes sites Web, j'ai dû mettre en œuvre l'actualisation automatique de la page Web après 15 minutes.Actualisation automatique de la page Web ASP.NET après un intervalle défini?

Pour cela j'achive ai écris suivant ligne de code

<meta http-equiv="refresh" content="60;url=" /> 

Mais je suis face à un problème qui, après cette durée de la page 15 minutes rafraîchira comme une nouvelle charge de page. Sur ma page, j'ai utilisé une liste déroulante ayant une liste de villes, il y a un cas où je sélectionne un élément de cette liste à l'index 3. Après cela, je rends la page inactive et après 15 minutes, la page est rafraîchie avec le script. écrire pour le retour automatique (mentionné ci-dessus). Mais le problème est que grâce à cette page est recharger comme une nouvelle page et le code à l'intérieur (!PostBack) exécuter qui recharger combobox et réinitialiser à l'index 1.

S'il vous plaît aidez-moi à résoudre ce problème? Mon exigence de base est que chaque fois que l'utilisateur accède à cette page et la rend inactive plus longtemps, la session ne devrait pas expirer et j'écris donc au-dessus du script pour que la session soit en direct.

+2

Avez-vous vraiment besoin d'actualiser la page entière? Ne pouvez-vous pas envelopper tout ce dont vous avez besoin dans un AJAX UpdatePanel? – codingbadger

+0

Mon exigence est que chaque fois que l'utilisateur atteint cette page et la rende inactive, la session ne devrait pas expirer de cette page. Par conséquent, j'écris script d'actualisation automatique. Toute autre façon de faire vivre la session? –

+0

duplication possible de [Quelle est la meilleure approche pour gérer les délais d'attente de session dans asp.net] (http://stackoverflow.com/questions/3308918/what-is-the-best-approach-to-handle-session-timeouts- in-asp-net) – Druid

Répondre

2

Voici une belle astuce javascript pour garder la session en vie - et non actualiser la page entière.

<img id="keepAliveIMG" width="1" height="1" src="/img/ui/spacer.gif?" /> 

<script language="javascript" type="text/javascript"> 
    var myImg = document.getElementById("keepAliveIMG"); 

    if (myImg){ 
     window.setInterval(function(){ 
       myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random()); 
      }, 6000); 
    } 
</script> 

(changer l'heure sur la minuterie que vous le souhaitez - est maintenant sur 6sec)

poste similaire: What is the best approach to handle session timeouts in asp.net

+0

Merci, Pouvez-vous s'il vous plaît m'expliquer où dois-je écrire ce code à l'intérieur ou . Comment ça marche? –

+0

@Hemant Comme c'est vous le placez en bas de la page juste avant la fermeture du corps. Ce que je fais ici, c'est que je recharge toutes les 6 secondes une petite image vide 1x1 pixel, donc le serveur ne ferme pas la session. Pour éviter le cache, je place un nombre aléatoire à la fin de l'image. Le script tel qu'il est doit être après l'img! L'autre façon est de faire un onload et d'appeler le script après le chargement de la page. – Aristos

+0

Je viens d'écrire le même morceau de code javascript mais n'écris pas d'étiquette d'image. Encore, il fonctionne très bien sans image. Comment? –

1

Je pense une minuterie (avec Viewstate allumé) ferait ce que vous » À la recherche de - Actualisez la page mais conservez les données et les sélections en cours. Assurez-vous simplement que sur les événements Page_Load et Tick, vous ne reliez pas les données.

Utilisez ce autour de ne pas autour de votre code de liaison de sorte qu'il ne lie que la première fois que la page est chargée

if (!IsPostBack) 
{ 
} 

Mettez une minuterie sur votre page ASPX

<asp:Timer id="Timer1" Interval="900000" /> 

900000 devrait être de 15 minutes en millisecondes.

+0

Je viens de remarquer votre commentaire à propos de POURQUOI vous cherchez à faire l'actualisation. Vous pouvez également entourer le temporisateur dans un UpdatePanel afin que l'actualisation ne soit pas visible pour l'utilisateur. Vous pouvez également envisager de modifier simplement l'intervalle Session.Timeout. – Jemes

Questions connexes