8
votes

Fixez les données du serveur sans extension du délai d'expiration de la session

Y a-t-il des façons d'ASP.NET pour récupérer des données du serveur sans prolonger le délai d'expiration de la session? Cela doit être fait toutes les quelques minutes sans interaction utilisateur tant que la page est fermée.

Contexte supplémentaire, comme demandé:

Les pages de mon webApp doivent interroger le serveur toutes les quelques minutes pour vérifier une condition particulière (maintenance d'urgence programmée pendant 30 minutes, dans ce cas). Lorsque la condition est vraie, la page affiche un message à l'utilisateur. Lorsque la condition est fausse, rien ne doit se produire.

Si je comprends bien, les post-retours au serveur réinitialisent l'heure à l'expiration de la session. Nous ne voulons pas que la session soit étendue / rafraîchie / réinitialisée / quel que soit le mot, chaque fois que la page interroge le serveur. J'ai besoin d'un moyen d'interroger le serveur automatiquement sans réinitialiser le délai de session.

Merci.


4 commentaires

Peut-être avons-nous besoin d'un peu plus d'informations? Vous pouvez simplement prolonger le délai d'attente de la session.


Les appels AJAX à un service Web ne devraient pas étendre la session de l'utilisateur.


@Refugee: ne devrait pas ou ne pas faire? N'hésitez pas à poster votre commentaire comme une réponse, comme on dirait que cela pourrait bien être la réponse que je recherche!


J'ai déjà répondu à votre question ci-dessous, avec une idée sur la manière de réaliser l'effet que vous souhaitez.


3 Réponses :


5
votes

Si vous demandez dans le contexte d'une longue requête HTTP, de sorte que vous souhaitez empêcher un délai d'attente HTTP, consultez Web.config's < / Code> Où ExecutionTimeout est en secondes, je pense, http : //msdn.microsoft.com/en-us/library/e1f13641 (v = vs.71) .aspx .

S'il s'agit vraiment d'une question de délai d'attente de session, est-il possible de ping de manière asynchrone le serveur sous la même session utilisateur, tandis que le long processus est en cours d'exécution?

EDIT : Sur la base de votre édition, si vous partitionnez votre service Web "Maintenance du site Web" dans un service en dehors de la portée de la session de la partie normale du site, vous pouvez alors l'appeler aussi souvent que vous le souhaitez. Si vous utilisez un service Web ASMX dans votre site Web actuel à ce stade, par exemple, la partitionne simplement dans une application distincte, peut-être comme un répertoire éteint de votre application, de sorte qu'il tombe sous le même domaine. J'imagine que cela fonctionnerait bien.

Je ne sais pas quel type de service Web vous invoquez à ce stade (ASMX, WCF, etc.), ou même si le service Web que vous appelez à ce stade est dans la même application que votre ASPX pages d'application.


0 commentaires

1
votes

Premièrement, si une requête fonctionne au-delà de la limite de temps de la session, il y a un problème grave avec la requête. Je préférerais résoudre la requête d'abord. Toutefois, si vous souhaitez toujours le faire à l'aide de la session, essayez ceci:

Vous pouvez avoir un mannequin.aspx dans votre application, puis un élément d'image actualiser son URL toutes les 15 minutes comme: P>

<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>


1 commentaires

En faisant le mannequin image.src = "dummy.aspx? .....", le navigateur émettra une demande d'obtention de cette URL, y compris également le cookie d'ID de session, et réinitialisera donc le délai de session.



-2
votes

Utilisez une minuterie JavaScript qui tire un appel Ajax. Donc, dans votre PAGELOAD ESCHO ECHO OUT UN JavaScript SETITINTERVAL (FONCTIONNECALL (), TIMETOLET); FONCTION. La méthode que vous appelez sera l'AJAX HIT à un service Web qui fait votre requête.

Cela continuera à vous appeler jusqu'à ce que l'utilisateur ferme la page.

Les sessions ne sont pas rafraîchies d'Ajax Hits.


2 commentaires

Ajax frappe sur la même application Web Do Rafraîchir la session, malheureusement. Merci pour l'aide en tout cas.


Les demandes AJAX sont comme des demandes régulières, sauf qu'ils sont asynchrones. Cela signifie qu'elles incluent également le cookie de la session ID, attachant la demande à la session et donc réinitialiser le délai d'attente.