[ASP.NET]Sessions bij gebruik van frames.

Pagina: 1
Acties:

  • jos707
  • Registratie: December 2000
  • Laatst online: 18-11 17:37
Een hardnekkig probleem waar ik al enige tijd geen raad mee weet. Een asp webapplicatie die een html pagina gebruikt die een frameset bevat (frames A en B). Elke frame verwijst op zijn beurt naar een verschillende aspx pagina. Het probleem dat hier onstaat is dat elke frame zijn eigen sessie opstart. Dit geeft problemen om de twee sessies elkaar gaan overlappen eveneens elkaars sessievariabelen gaan overschrijven. Het is de bedoeling dat vanuit de frameset slechts één sessie wordt teruggeven nl. die van frame A. Ik heb reeds geprobeert om bij het opstarten van de sessie vanuit frame B deze te cancelen dmv 'Session.Abandon' maar blijkt niet te helpen.
Heb hier al heel wat voor rondgegoogled maar heb geen echte oplossing kunnen vinden.
Het is blijkbaar een bekend probleem maar zonder echt een bekende oplossing.

Ik heb verder geen andere keus dan met frames te werken dus een pagina zonder frameset aanmaken is geen optie :(

Iemand hier enige ervaring mee?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18-11 08:25

Janoz

Moderator Devschuur®

!litemod

Waarschijnlijk komt dit omdat beide requests redelijk tegelijk gebeuren. Hierdoor is er nog geen cookie gezet en krijgen beide frames elk hun eigen sessionId.

Je moet gewoon zorgen dat de sessie door de frameset zelf gestart wordt. Dan is de sessieId al bij de client bekend op het moment dat hij frame A en B op gaat halen. Zorg dus gewoon dat de frameset zelf ook via asp.net opgeleverd wordt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
jos707 schreef op donderdag 26 juni 2008 @ 17:14:
...
Ik heb verder geen andere keus dan met frames te werken dus een pagina zonder frameset aanmaken is geen optie :(
...
Hoewel je ongetwijfeld geen keus hebt, waar wordt dat door gedreven? Zegt de klant dat? Een medeprogrammeur? Of is het een technische keuze? Waarop gebaseerd?

Framesets gesynchroniseerd houden is een crime en het probleem dat jij nu hebt is daar een voorbeeld van. Overigens is het idd een goed idee om te doen wat Janoz aangeeft, dus ook van de frameset een aspx pagina maken.

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 13-11 10:30

mOrPhie

❤️❤️❤️❤️🤍

Verwijzen de frames naar aspx pagina's op verschillende domeinen? Ik heb ooit in .net 1.0 met frames moeten werken en dit probleem nooit ervaren namelijk. Het zou kunnen zijn dat onze frameset zelf ook een aspx was, dat weet ik niet. :)

Anders dan dat zou je ook een global.asax kunnen gebruiken om de sessie te initialiseren eventueel? :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18-11 08:25

Janoz

Moderator Devschuur®

!litemod

Ik vermoed niet dat er naar verschillende domeinen verwezen wordt. Wanneer dat wel het geval was dan zouden beide sessies gewoon gescheiden blijven. De topicstarter heeft het erover dat beide sessies elkaar overschrijven.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 17-11 21:39

mulder

ik spuug op het trottoir

Het zijn dan toch ook geen 2 sessies, de sessies schrijven elkaars variabelen over omdat ze dezelfde sessie hebben? Ergo: design flaw?

[ Voor 7% gewijzigd door mulder op 26-06-2008 22:12 ]

oogjes open, snaveltjes dicht


  • jos707
  • Registratie: December 2000
  • Laatst online: 18-11 17:37
De frameset wordt niet opgeleverd door asp omdat het een html pagina is. Asp kijkt alleen naar aspx paginas dacht ik. Aangezien het frameset twee verschillende aspx pagina's oproept wordt er twee maal een sessie opgestart dus ook twee maal een cookie aangemaakt. Dit probleem zou zich alleen voordoen van IE6 aangezien hier de security wat aangescherpt is waardoor 2 aps requests vanuit een zelfde frameset worden aanzien als request vanuit 2 verschillende pagina's waardoor er dus telkens een andere sessie wordt aan verbonden.
Volgende oplossing heeft niet geholpen blijkbaar worden er toch nog meerdere sessies opgestart.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18-11 08:25

Janoz

Moderator Devschuur®

!litemod

Normaal zorgt de eerste pagina er voor dat een cookie wordt gezet met hierin het sessionId. Dit wordt pas gezet op het moment dat het repsonse binnenkomt. Vaak wordt de sessionId ook nog aan de url's geplakt voor het geval cookies niet geaccepteerd worden (dat weet je op de server pas later).

Het punt bij het frame is dat beide frames tegelijk opgehaald worden. Ze krijgen elk een sessionId. Degene die als laatste binnen is zet het cookie, maar doordat er ook url's herschreven worden kan daardoor telkens van sessie gewisseld worden (url heeft sessionId 1 terwijl cookie sessionId 2 heeft)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

De sessies die gekoppeld zijn aan een frameset komen in een willekeurige volgorde aan dus het is niet mogelijk om hier een structuur in te brengen volgens volgorde. Je kan misschien telkens controleren met welke pagina ik te maken heb door naar request["url"] te kijken. En alleen de initialisatie van de sessievariabelen te laten gebeuren wanneer een bepaalde url zich aanbiedt. Lijkt mij niet echt de mooiste oplossing iig.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 18-11 08:25

Janoz

Moderator Devschuur®

!litemod

De frameset wordt niet opgeleverd door asp omdat het een html pagina is.
Nou, dan maak je er toch aspx van? Waarom kan dat niet? Verder ben ik ook erg benieuwd naar de antwoorden op de door bigbeng gestelde vragen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • jos707
  • Registratie: December 2000
  • Laatst online: 18-11 17:37
Ja misschien is het gebruik van een aspx pagina de enige goede oplossing. Maar ik wilde weten of er misschien andere mogelijkheden zijn met behoud van de htm frameset pagina. Deze htm pagina behoort nl. tot een groter framework dat reeds enige tijd in gebruik is en waaraan ik eigenlijk niets mag wijzigen. De bedoeling is dat ik alleen het gedeelte maak dat door de frameset wordt aangeboden (de aspx paginas). Blijkbaar heeft dit probleem in het verleden nooit gespeeld omdat er tot nog toe steeds met oudere browsers werd gewerkt (IE5).
Maar ik ben wel eveneens van mening dat het gebruik van frames geen goed idee is en eigenlijk al een hele tijd passé is.

iig bedankt voor de antwoorden. :)
Pagina: 1