joupMedlem sedan feb. 2002116 inlägg Hej!
Jag har ett problem med sessions. Driver en hemsida som är lite av ett community med diskussionsforum och annat, det kräver att besökarna blir medlemmar och loggar in.
Tyvärr har jag problem med att vissa (rätt många), blir automatiskt utloggade regelbundet utan anledning. De kan logga in utan problem, men medan de surfar runt på sidan så kan de helt plötsligt loggas ut. Det är inte time-out-tiden som är problemet, för den är satt till 20 minuter, och besökarna kan bli utloggade utan att de varit "inaktiva" i 30 sekunder. Så av någon anledning så "tappar" besökaren sin session, helt utan anledning.
Jag sätter sessions så här när besökaren loggar in (den hämtar infon från databasen):
Session("uid") = RS("id")
Session("username") = RS("username")
Session("admin") = RS("admin")
Servern är en Celeron 2.0 Ghz, 256 DDR ram, kör Windows 2003, IIS 6, time-out-tiden för "sessions" är satt till 20 minuter, cirka 1000 medlemmar loggar in dagligen, och som mest har vi cirka 100 inloggade samtidigt.
Är det någon som haft liknande problem eller vet vad det beror på? Har vänt ut-och-in på koden, men kan inte hitta någon anledning till varför det blir så här.
OveRRidEMedlem sedan feb. 200112 078 inlägg Jag tror inte att sessionernabara slutar helt utan anledning, så det är nog ett kodmässigt fel.
Kan du visa koden som kontrollerar om användaren är inloggad på varje sida?
StuckMedlem sedan juli 200072 inlägg Jag har liknande problem på min site.
Men jag kan ge dig några tips som skapat problem för mig. Undvik att köra med Session.Abandon(). Det verkar som den fungerar lite små bugigt och på nåt sätt får andras Sessioner än den som den är tänkt för att dö.
Men som sagt jag har liknande problem just nu. Men jag postar npg en egen tråd om det.
joupMedlem sedan feb. 2002116 inlägg OverRRIDE:
Jag kör med vanliga if-satser, typ
<%if Session("uid")="" then%>
Inte inloggad
<%else%>
Inloggad
<%end if%>
MeleaMedlem sedan juli 20033 147 inlägg Har samma problem, när sessionen går ut så loggas användarna ut automatiskt med en If sats som jag använder, nästan precis som den ovan.
Bosse168Medlem sedan nov. 20031 018 inlägg Jag har samma problem så skulle gärna vilja veta lösningen på detta "lilla" problem. :)
tråd
OveRRidEMedlem sedan feb. 200112 078 inlägg Detta verkar vara ett återkommande problem i samband med IIS 6 på Windows Server 2003. Jag har nu hört flera som har samma problem. Jag har dock ingen aning om vad det beror på, och jag har inte lyckats hitta nåt på MSDN om det heller.
Inte någon annan som har några uppslag?
ObbelixMedlem sedan okt. 2002257 inlägg Jag hade ett liknande problem med IIS6. Kom fram till att det (i mitt fall) var fler än en (1) "worker process".
i IIS manager:
1. Leta fram den Application Pool som berörd webbplats ligger i.
2. Högerklicka på denna och välj properties.
3. Gå till fliken Performance och kolla i rutan längst ner ("maximum number of worker processes").
Är inte säker på vad "default" är, men efter jag ställde till 1 så har det fungerat. Hur det påverkar prestanda mm vet jag inte, men det skulle vara bra att få reda på.
Bosse168Medlem sedan nov. 20031 018 inlägg Obbelix:
Den var redan satt som 1 default
OveRRidEMedlem sedan feb. 200112 078 inlägg Jag är inte säker på att man skall ge sig på de där inställningarna utan att veta vad som är standard eller rekommenderade värden.
Dessutom har jag väldigt svårt att se att IIS inte kan replikera sessioner mellan olika arbetarprocesser, om den ens bryr sig om att balansera sådant mellan dem.
logicMedlem sedan maj 200481 inlägg Jag skulle också gissa på att det är något fel i koden.
Förresten, vore det inte smartare att spara ner alla sessioner i en?
T ex session("user") = RS("id");RS("username");RS("admin")
Och sen delar du upp all information mha split() till arrayer. Då borde iallafall servern bli gladare när den slipper sätta 2000 sessioner dagligen i onödan :)
Bosse168Medlem sedan nov. 20031 018 inlägg logic:
Hur får man splitten att funka?
OveRRidEMedlem sedan feb. 200112 078 inlägg Dim vUserSettings
vUserSettings = Split(Session("User"),";")
Jag rekommenderar dock inte denna typ av lagring i session, personligen.
OveRRidEMedlem sedan feb. 200112 078 inlägg Det känns som om man kan ta den otroligt marginella prestandasmällen som det innebär att ha en sessionsvariabel per värde, till fördel för läsbarhet och eventuell iteration av inställningar knytna till t.ex. en användare.
Jag menar, det blir ju inte direkt mindre allokerat utrymme i minnet om man lagrar allt i en klump. Det är fortfarande lika mycket data.
Att en intensiv maskin har över, låt säga 10.000 sessionsvariablar att hålla reda på är inte alls så ovanligt som man tror. Och det är inte det som gör att servern rasar.