Voor mijn project heb ik de domein en data acces laag beide in een apparte assembly geplaats. De Domein laag heeft een referentie naar de data acces laag. De web applicatie heeft een referentie met de domein laag.
Binnen een global.asax file wil ik graag binnen een bepaalde event gegevens opslaan. naar een database.
binnen de Session_Start event heb ik een object (afkomstig van de domein laag) toegevoegd aan de Session object.
deze wordt weer uitgelezen uit de Session object in de Application_OnPostRequestHandlerExecute event. Met behulp van set methodes van dat object verander ik als het ware de gegevens. Na alle bewerkingen wil ik dit alles opslaan in een database. Dit gebeurt in principe als een sessie is geeindigd. Maar op te testen of alles werkt heb ik de source code in de Application_OnPostRequestHandlerExecute event geplaats. Deze zit er als volgt uit:
de Insert() methode roept een datamapper die verantwoordelijk is voor het opslaan van de gegevens. uiteraard heb ik de domein en data acces laag getest. Ik weet 100% zeker dat de Insert methode werkt (naast unit testen ook nog voor de zekerheid gekeken of het ook daadwerkelijk is opgeslagen binnen een database).
maar gek genoeg werkt het bovenstaande source code niet. er wordt namelijk niks opgeslagen. Omdat het niet werkte heb ik de source code geplaats in de Session_End event. de source code ziet er als volgt uit:
het bovenstaande werkt ook niet (heb nog geprobeerd te debuggen maar daar komt die hele debugger niet eens langs
het bovenstaande heb ik vervolgens in de Application_End event geplaats. daar werkt het namelijk wel. Mijn vraag is waar is dit zo?
Binnen een global.asax file wil ik graag binnen een bepaalde event gegevens opslaan. naar een database.
binnen de Session_Start event heb ik een object (afkomstig van de domein laag) toegevoegd aan de Session object.
deze wordt weer uitgelezen uit de Session object in de Application_OnPostRequestHandlerExecute event. Met behulp van set methodes van dat object verander ik als het ware de gegevens. Na alle bewerkingen wil ik dit alles opslaan in een database. Dit gebeurt in principe als een sessie is geeindigd. Maar op te testen of alles werkt heb ik de source code in de Application_OnPostRequestHandlerExecute event geplaats. Deze zit er als volgt uit:
code:
1
2
| domein.IpAdres=Request.UserHostAddress;
domein.Insert(); |
de Insert() methode roept een datamapper die verantwoordelijk is voor het opslaan van de gegevens. uiteraard heb ik de domein en data acces laag getest. Ik weet 100% zeker dat de Insert methode werkt (naast unit testen ook nog voor de zekerheid gekeken of het ook daadwerkelijk is opgeslagen binnen een database).
maar gek genoeg werkt het bovenstaande source code niet. er wordt namelijk niks opgeslagen. Omdat het niet werkte heb ik de source code geplaats in de Session_End event. de source code ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Session.Clear();
Hashtable ht = (Hashtable)Application["SESSION_LIST"];
IDictionaryEnumerator en = ht.GetEnumerator();
while(en.MoveNext())
{
HttpSessionState session = (HttpSessionState)en.Value;
if(session != null)
{
Domein domein = (Visitor)session["USER_INFO_MAP"];
domein.Insert();
}
}
//ht.Remove(Session.SessionID); |
het bovenstaande werkt ook niet (heb nog geprobeerd te debuggen maar daar komt die hele debugger niet eens langs
het bovenstaande heb ik vervolgens in de Application_End event geplaats. daar werkt het namelijk wel. Mijn vraag is waar is dit zo?