comment clôturer une session avec client callback?
1 réponse
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <kns@shdv.sd> a écrit dans le message de news:
%23%23FMaK%23NIHA.4740@TK2MSFTNGP02.phx.gbl...
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
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