Just nu i M3-nätverket
Jump to content

Tvinga fram ny session?


Comus

Recommended Posts

Hej!

 

Jag håller på med en C#-applikation som har flera WebBrowser-kontroller. WebBrowser-kontrollerna blir automatiskt inloggade på webbsidor med olika värden, värden som i sin tur blir lagrade i session-variabler på servern.

 

Mitt problem är att alla WebBrowser-kontroller delar sessionobjekt. Så om jag loggar in och lagrar ordet "Banjo" i ett WebBrowser-fönster så går det även att nå från vilken av de andra WebBrowserfönstrena om dom går mot samma sida.

 

Det jag skulle vilja göra är att tvinga fram en ny session på servern genom att bara ändra på anropet. Har försökt mixtra med headerna men det enda jag åstadkommit är "Bad Request (Invalid Header Name)".

 

Någon som har en aning om det här ens är möjligt att åstadkomma?

 

Link to comment
Share on other sites

Sessions använder sig av cookies, och då samtliga instanser av en webläsare utgår i från samma cookies så kan det bli knepigt.

 

Prova att ändra i web.config till att köra cookieless sessions. Då kommer session-id lagras i url istället. Då bör du åtminståne i teorin kunna skapa fler sessions för samma användare.

 

Link to comment
Share on other sites

Alla instanser av en webbläsare delar inte session, öppnar jag två IE"s genom att köra iexplore.exe två gånger o sen gå till samma webbplats med dom så kommer dom ha två skilda sessions. Öppnar jag däremot en webbläsare, går till en viss webbplats och sen väljer Arkiv->Nytt fönster så kommer dom att dela session. Det verkar helt enkelt bero på hur dom instansieras.

 

Som jag förstått det så fungerar sessions som så att sessionid"t sparas som temporär cookie på klienten samt i minnet på webbservern (där även sessionvariablerna sparas)? Då är ju frågan om klienten skickar iväg session-id"t i HTTP headern och om man i så fall kan ta bort det värdet alt ändra det så att servern tvingas starta en ny session.

 

Jag har väldigt begränsad möjlighet att mixtra med webbservern, ska det till en lösning på det här problemet så måste det ske på klientsidan.

 

Link to comment
Share on other sites

Gå in på din sida.

Se till att du har fått en session.

I adressfältet, skriv javascript:alert(document.cookie);

Då borde du få en medelanderuta med alla cookies som din webläsare kan se på denna domän.

Om du kan hitta din session-cookie där så betyder det att javascript kan se den, och då kan du med javascript ta bort den. Då borde IIS sparka igång en ny session för din användare.

 

Annars har jag för stunden inget jättebra förslag på hur man "stänger" en session.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...