Jag kodar för en webshop där varukorgen, en tempuser tabell och en sessiontabell (där info om alla aktiva sessioner sparas) ska rensas för varje session när den avslutas. Asp.net startas om lite då och då. Om sessionerna lagras i asp.net-processens minne blir de förlorade då och onend körs aldrig. Om de lagras utanför asp.net-processen körs aldrig onend någonsin. Tack för förklaringen ! >Application OnEnd Application_OnEnd körs innan IIS:en stängs av eller servern startas om. >Application_OnEnd körs innan IIS:en stängs av eller servern startas om.Session OnEnd, dags att reda ut vad som gäller.
Detta fungerar oftast men inte alltid så tabellerna har hela tiden en massa skräprader som inte tagits bort när session avslutats.
Koden är (tar bara med sessionrensningen de andra är precis lika):
public void Session_OnEnd(){
///// Rensar sessiontabellen
string strConnection = ConfigurationSettings.AppSettings["ConnectionString"];
strSql = "DELETE FROM sessionstb WHERE session_id='"+Session["id"]+"'";
OdbcConnection objConnection = new OdbcConnection(strConnection);
OdbcCommand objCommand = new OdbcCommand(strSql, objConnection);
objConnection.Open();
objCommand.ExecuteNonQuery();
objConnection.Close();
}
Att Session on end lever sitt eget liv har jag hört, men finns det nån förklaring till varför det blir så här ?
Finns det nåt man kan göra för att detta ska fungera bättre?
Beror det på webhotellet ? Webhotellet jag har är inte det bästa direkt.Sv: Session OnEnd, dags att reda ut vad som gäller.
Du kan helt enkelt inte värja dig emot det. Det bästa du kan göra är att lagra ett datum också, sedan får du lite då och då rensa ut föräldrade sakerSv:Session OnEnd, dags att reda ut vad som gäller.
Att ASP.net startas om. Är det samma sak som att applikationen startas om ?
Isf skulle man väl kunna fånga upp det i Application OnEnd ?
Jag lagrar datum så jag brukar rensa manuellt nu, men jag får väl
automatisera rensningen då.Sv: Session OnEnd, dags att reda ut vad som gäller.
Kanske, nu vet jag itne till hundra procent om session onend måste köras. Däremot vet att jag att application onend inte måste köras, kan den köras så körs den, ofta körs den dock inte. En enkel anledningen är att asp.net hänger sig, det finns dock andraSv:Session OnEnd, dags att reda ut vad som gäller.
Sv: Session OnEnd, dags att reda ut vad som gäller.
I bästa fall, vid t.ex. hängning så tror jag inte att man räkna med att den körs