Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment clôturer une session avec client callback?

1 réponse
Avatar
Chris
Bonjour,

Les utilisateurs de notre inranet peuvent poster un message dans un groupe
de discussion. L'utilisateur doit d'abord choisir un pseudo. Cette
application contient des pages 'normales' et des pages avec client callback,
afin d'actualiser la liste des pseudos actifs.

J'utilise une variable session et le timeout est = 15.
Dans le web.config, il y a: <sessionState mode="InProc" timeout="15">

Ce que j'essaye de faire est: quand la session expire (l'utilisateur n'a
plus rien fait pendant 15', donc la valeur de session("pseudo") est vide),
et il essaye de naviger vers une autre page, il est renvoyé vers la page
start.aspx pour un nouveau pseudo. Dans chaque page, j'ai ajouté ceci:

If Session("pseudo") = "" Then
Response.Redirect("start.aspx")
End If

Ca marche parfaitement ... sauf pour les pages contenant un client callback,
parceque là, il y a échange de données toutes les deux secondes entre le
ckient et le serveur. (vor le code). Donc, si l'utilisateur reste sur une
telle page en ne faisant rien, après 15', au lieu d'être redirigé vers
start.aspx, il peut continuer à naviger; ma session n'est pas fermée.

Ma question est: comment fermer le session après ces 15' sur une telle page?

Merci
Bob

Voyez le code de aspx file:
-------------------------
<script type="text/javascript">
setInterval('refresh();',2000);

function refresh()
{
CallServer('', null);
}

function Retour(mess, context)
{
var obj = document.getElementById("<%= Label1.clientID %>");
obj.innerText = mess;
}

et le code-behind: (en partie)
------------------------------

Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles
Me.Load
If Session("pseudo") = "" Then
Response.Redirect("start.aspx")
Else
Dim cm As ClientScriptManager = Page.ClientScript
Dim cbReference As String
cbReference = cm.GetCallbackEventReference(Me, "arg", _
"Retour", "")
Dim callbackScript As String = ""
callbackScript &= "function CallServer(arg, context)" & _
"{" & cbReference & "; }"
cm.RegisterClientScriptBlock(Me.GetType(), "CallServer", _
callbackScript, True)
End If
End Sub

1 réponse

Avatar
news.microsoft.com
Salut,

Là, comme ça, la première idée qui me vient serait de créer ue deuxième
application (qui peut tout à fait être située dans un répertoire virtuel en
dessous de l'application principale) qui réponde aux callbacks et qui soit
sessionless. A voir quand même l'aspect sécurité de tout ça...

Dans l'espoir que ça t'aide.

Martin CLAVREUIL
SQLI - Toulouse

"Chris" a écrit dans le message de news:
%23%23FMaK%
Bonjour,

Les utilisateurs de notre inranet peuvent poster un message dans un groupe
de discussion. L'utilisateur doit d'abord choisir un pseudo. Cette
application contient des pages 'normales' et des pages avec client
callback, afin d'actualiser la liste des pseudos actifs.

J'utilise une variable session et le timeout est = 15.
Dans le web.config, il y a: <sessionState mode="InProc" timeout="15">

Ce que j'essaye de faire est: quand la session expire (l'utilisateur n'a
plus rien fait pendant 15', donc la valeur de session("pseudo") est vide),
et il essaye de naviger vers une autre page, il est renvoyé vers la page
start.aspx pour un nouveau pseudo. Dans chaque page, j'ai ajouté ceci:

If Session("pseudo") = "" Then
Response.Redirect("start.aspx")
End If

Ca marche parfaitement ... sauf pour les pages contenant un client
callback, parceque là, il y a échange de données toutes les deux secondes
entre le ckient et le serveur. (vor le code). Donc, si l'utilisateur reste
sur une telle page en ne faisant rien, après 15', au lieu d'être redirigé
vers start.aspx, il peut continuer à naviger; ma session n'est pas fermée.

Ma question est: comment fermer le session après ces 15' sur une telle
page?

Merci
Bob

Voyez le code de aspx file:
-------------------------
<script type="text/javascript">
setInterval('refresh();',2000);

function refresh()
{
CallServer('', null);
}

function Retour(mess, context)
{
var obj = document.getElementById("<%= Label1.clientID %>");
obj.innerText = mess;
}

et le code-behind: (en partie)
------------------------------

Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles
Me.Load
If Session("pseudo") = "" Then
Response.Redirect("start.aspx")
Else
Dim cm As ClientScriptManager = Page.ClientScript
Dim cbReference As String
cbReference = cm.GetCallbackEventReference(Me, "arg", _
"Retour", "")
Dim callbackScript As String = ""
callbackScript &= "function CallServer(arg, context)" & _
"{" & cbReference & "; }"
cm.RegisterClientScriptBlock(Me.GetType(), "CallServer", _
callbackScript, True)
End If
End Sub