Vill mitt under en session byta sessionid Session.Abandon() gör så att sessionen avslutas efter att sidan är färdigkörd. Användaren får alltså en ny session när nästa sida hämtas. Danne, självklar fungerar det så som Göran säger och om du tänker på det så är det inte så konstigt. En session startas när besökaren kommer till sidan, dvs när det kommer in en request som inte redan körs under en session. När du avbryter en session mitt i en request så skickas svaret tillbaka till besökaren som nu är utan session. Session.Abandon(); DanneT, Tack :) DanneT, Tack igen Hej Har tagit en kort semester från programmeringen. Förstår hur du menar att löpnummer kan vara dumt att använda.sessionID
på användaren.
Testade Session.Abandon(), men det funkade inte.
Tacksam för svar :)Sv: sessionID
Sv: sessionID
Vid nästa request så kommer asp.net att upptäcka att anroper kommer från en besökare som inte har en aktiv session.
Du kan bekräfta detta beteendet genom att studera hur sessionens Start och End event anropas. Tänk på att End inte anropas om du inte har en InProc session vilket är standard i ASP.NET. Du kan kontrollerar sessions typen genom att titta i din web.config eller titta på Mode egenskapen för sessionen.
//AndreasSv: sessionID
Response.Redirect("test.aspx");
När jag kommer till "test.aspx" har jag fortfarande samma sessionId, varför.
Jättetacksam för ett svar ikväll, redovisning imorgon :)Sv: sessionID
Tog mig en snabb titt på Sessions och det visar sig att när du använder Session.Abandon() så rivs din session ner (variabler och andra resurser som den använder frigörs) men ett SessionID behålls så länge det finns en browser-session öppen.
Att det fungerar så är via design och det är för att man enkelt skall kunna återanvända ett SessionID då det består av ett 120bit värde som slumpas fram - något man inte vill behöva göra oftare än vad man behöver.
Så för att skapa ett nytt SessionID så skulle du i princip behöva stänga din browser eftet det att du förstört den aktiva sessionen. Vad behöver du ett nytt SessionID för? Använder du det för att unikt idientifer användaren eller liknande? Om detta är fallet så kan du vid skapandet av en ny session, generera ett GUID som du lagrar i en sessionsvariabel, och med denna kan du få ett unikt ID som du kan använda.
//AndreasSv: sessionID
GUID, hur skapar man det?
Jag använder sessionid för att knyta ihop beställningar.
Alla beställningar till en kund får samma sessionid.
Om en ny kund kommer och gör en beställning i samma browser,
så ska hans beställningar få ett eget unikt id-nummer. Sv: sessionID
Hmm det låter inte som en bra design att använda sessionid för att knyta en beställning mot en kund då man får nytt sessionid varje gång man besöker sidan. Att generera ett nytt GUID varje gång man kommer till sidan ger samma resultat - man får ett nytt varje gång.
Använder du dig någon form av databas för att gålla reda på kunder och beställningar? Har inte varje kund et unikt id nummer (t.ex primärnyckel) eller liknande ? Det är en mycket lämpligare kandidat för att knyta samman kunder och beställningar.
Förövrigt använder man <b>Guid.NewGuid()</b> för att generera ett nytt GUID. =)
//AndreasSv: sessionID
Du missförstod lite (dvs jag förklarade dåligt :) )
Kunden får ett nytt id vid varje beställning.
- kunden betäller en mängd varor, som får samma id
- kunden anger sitt namn och adress och får detta id
- sedan kopplas varornas id och kundens id ihop till en order
- när ordern är klar kan id förstöras och ska helst aldrig återanvändas
Ska testa Guid.NewGuid()
Det bästa vore kanske att räkna upp ett id och lägga i databasen.
Varje gång en ny beställning börjar så tar man id++. Sedan läggs detta
id i en session som finns kvar under hela kundens beställning.
Vid avslut tas session.abandon().
Vad tror du om det?Sv: sessionID
Det är lite farligt att göra så om användaren har möjlighet att använda sitt ID-nummer för att tex kolla leveransstatus. Använder du löpnummer är det enkelt att gissa sig till någon annans ID, eftersom det bara är att räkna plus eller minus till egna.
/andersSv: sessionID
Det sägs att familjen är viktig också :)Sv: sessionID
GUID verkar säkrare.
Tack för hjälpen :)