Toon posts:

[ASP.NET] Sessie variabelen doorgeven

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo ik zit met het volgende rare probleem...

Ik heb gewoon een aspx projectje met meerdere aspx-paginas.

Ik voeg in 1 pagina in de codebehind een sessievariabele toe, en vul deze. Binnen deze pagina zelf kan hij deze sessievariabele WEL benaderen.

Zodra ik op een knop druk die redirect naar een andere pagina, zegt de andere pagina als ik er om vraag, dat de sessievariabele niet bestaat.

Als ik vervolgens weer naar die eerste pagina ga, bestaat hij daar uiteraard ook niet meer.

Hoe geef ik aan dat ze de zelfde sessievars moeten gebruiken met zelfde sessie-id oid???

help!?!?

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:54
:?
Ben je zeker dat die pagina SessionState ondersteunt (EnableSessionState)?
Ben je ook zeker dat je niet in de war bent met ViewState ?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:54
Of zijn je cookies misschien disabled ?
Sessies werken met cookies, tenzij je met cookieless session werkt (dat kan je aangeven in je web.config). Je sessie-id wordt dan meegegeven met de url.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Okee ik ben dom...

In de page_load staat dat (if ispostback = false) de sessievars op 0 worden gezet. vandaar.

Maar nu vraag ik me af hoe ik er achter kom of een pagina door een andere aangeroepen is.

Want als ik van een pagina naar een andere ga is er bij de 2de pagina geen sprake van een postback, dus hoe kom ik er achter dat hij via een andere gelinkt is.

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:54
Waarom wil jij je sessie-variableen leegmaken als je naar een andere pagina gaat ?

https://fgheysels.github.io/


Verwijderd

waarom zet je ze op 0 als er geen postback is?

kan je niet beter in de session_onstart in de global.asax die variabelen initialiseren?

of anders in je page_load (als je dat toch wilt gebruiken) checken of ze bestaan en ander sop 0 zetten?

Verwijderd

Topicstarter
Ik heb een pagina waar een tel-sessievariabele is.

deze heet AANTAL. deze moet persee de allereerste keer op 0 gezet worden.

dit is op pagina A zeg maar.

Dan ga ik naar pagina B, waar iets gebeurt, en AANTAL wordt AANTAL+1 en vervolgens gaat hij terug naar pagina A.


Die allereerste keer dat AANTAL aangemaakt wordt, en 0 wordt, staat gewoon in:

if ispostback=false then session.Add('Aantal','0');

Maar het probleem is dus dat als van pagina B naar A geredirect wordt, is IsPostBack kenlijk false.

Hoe detecteer ik dat de vorige pagina dus pagina B is, of hoe anders definieer ik die sessievar voor het eeerst.

Verwijderd

Topicstarter
Verwijderd schreef op 09 november 2004 @ 10:48:
waarom zet je ze op 0 als er geen postback is?

kan je niet beter in de session_onstart in de global.asax die variabelen initialiseren?

of anders in je page_load (als je dat toch wilt gebruiken) checken of ze bestaan en ander sop 0 zetten?
Hoe controleer je of een sessievar al bestaaT?

Kan ik namelijk niks over vinden. Wel naar gekeken.

Verwijderd

Verwijderd schreef op 09 november 2004 @ 10:57:
deze heet AANTAL. deze moet persee de allereerste keer op 0 gezet worden.
Session_Onstart event gebruiken
Dan ga ik naar pagina B, waar iets gebeurt, en AANTAL wordt AANTAL+1 en vervolgens gaat hij terug naar pagina A.
en wat moet er dan met aantal gebeuren? weet terug naar 0? of 2?
Maar het probleem is dus dat als van pagina B naar A geredirect wordt, is IsPostBack kenlijk false.
IsPostBack is niet voor niets Page.IsPostBack

[ Voor 1% gewijzigd door Verwijderd op 09-11-2004 11:06 . Reden: [quote] ]


Verwijderd

Verwijderd schreef op 09 november 2004 @ 10:58:
[...]


Hoe controleer je of een sessievar al bestaaT?

Kan ik namelijk niks over vinden. Wel naar gekeken.
HttpSessionState.Keys: Gets a collection of the keys of all values stored in the session.

Verwijderd

Topicstarter
bij httpsessionstate.keys geeft hij tijdens hte compileren de volgende error:

Property 'Keys' inaccessible here.

Als ik session.keys.count wli opvragen geeft hij tijdens het runnen een security error:

Serverfout in toepassing /WebApplication12.
--------------------------------------------------------------------------------

Het type System.Security.Permissions.PermissionState kan niet worden geladen van assembly WebApplication12, Version=1.0.1774.20740, Culture=neutral, PublicKeyToken=null.


Waarschijnlijk omdat er nog geen sessie is. Maar als ik een sessie aanmaak elke keer, zijn de sessievars ook weer weg :) dus hoe controleer ik de aanwezigheid van een sessie ..

Dat van Global.asax zal ik nu nog eff proberen

Verwijderd

Verwijderd schreef op 09 november 2004 @ 11:33:
bij httpsessionstate.keys geeft hij tijdens hte compileren de volgende error:

Property 'Keys' inaccessible here.
dat klopt. Want je moet ook Session.Keys doen. Session is van type HttpSessionState.
Als ik session.keys.count wli opvragen geeft hij tijdens het runnen een security error:
Session.Count geeft ook het aantal. Maar via keys krijg je de keys terug van objecten die je in de sessie gegooid hebt. Kan ook null zijn, dus dan zal een count erop denk die error veroorzaken. Ook al had ik meer iets verwacht van object reference not set to an instance of an object.

voor jou probleem had je gewoon even de basics van sesion management moeten checken en de variabelen dus initialiseren in je session_OnStart event

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
je kan toch ook gewoon controleren of een Session var bestaat door
C#:
1
2
3
4
if( Session[ "key" ] == null )
{
    //de key bestaat nog niet
}

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Het is gelukt via global.asax idd.

bedankt! :)

Verwijderd

rwb schreef op 09 november 2004 @ 11:57:
je kan toch ook gewoon controleren of een Session var bestaat door
C#:
1
2
3
4
if( Session[ "key" ] == null )
{
    //de key bestaat nog niet
}
niet helemaal. "key" kan namelijk wel bestaan, maar gewoon de waarde null hebben.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op 09 november 2004 @ 12:05:
[...]


niet helemaal. "key" kan namelijk wel bestaan, maar gewoon de waarde null hebben.
Ja oke daar heb je gelijk in. Maar als jij je Session var altijd een waarde geeft dan kan het wel natuurlijk. De makkelijkste en mooiste manier is natuurlijk gewoon in de OnSessionStart voor dit geval.

[ Voor 4% gewijzigd door Woy op 09-11-2004 12:37 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1