Avatar billede codecow Nybegynder
28. februar 2011 - 09:54 Der er 2 kommentarer og
1 løsning

I ASP.NET kalde en Disconnect metode når siden forlades

Hej

Jeg er ved at leve en side i asp.net. Den bruges til at redigere og oprette noget data vi forskellige tekst felter og dropdowns.

Dataene den viser får den fra en database som den tilgår via en DLL. Dvs at der skal kalles en Connect() metode på dll'en som man så får en session fra som man kalder metoder på.

Når man er færdig skal Disconnect() kaldes. Problemet er at jeg ikke kan finde ud af hvornår brugeren forlader siden. Page_Unload eventen kan ikke bruges da den kaldes hver gang siden er renderet.

Man kunne sætte en timer på unload eventen og så nulstille den i load eventen men det syntes jeg er et hack.

Er der nogen der har en ide om hvad man kan gøre, der er pænere?

Mvh

Henrik
Avatar billede aaberg Nybegynder
28. februar 2011 - 11:05 #1
Uha, dette lyder som om der er en heftig designfejl et eller andet sted!

Normalt når man bruger en database fra en asp.net side, vil du for hver postback åbne databasen, køre dine queries, og lukke igen. Databaseforbindelsen står aldrig åben!.

Jeg foreslår at du for hver postback kalder Connect, gør det du skal gøre, og kalder disconnect når du er ferdig. Ikke lad forbindelsen være åben under hele sessionen.
Avatar billede codecow Nybegynder
28. februar 2011 - 11:39 #2
Hej

Tak for svaret. Du har nok ret. Jeg er rimelig ny mht. ASP.NET så laver det om. Det virker bare lidt som overkill at connected og disconnecte hele tiden :)

Mvh

Henrik
Avatar billede aaberg Nybegynder
28. februar 2011 - 13:06 #3
De fleste databaser bruger connection-pooling. Dvs, at selvom du lukker en forbindelse, og åbner den igen senere, vil den genbruge forbindelsen. Det koster altså næsten ingenting at lukke og åbne databaseforbindelsen.

Hvis din forbindelse er åben igennem hele sessionen, vil du kraftigt begrænse antal brugere på din webside. Lad os sige at din database understøtter 10 samtiddige brugere; hvis forbindelserne holdes åbne, vil den 11. bruger sættes på vent. Han får altså ikke svar fra siden. Hvis forbindelserne kun holdes åbne når de bruges, vil din side kunne takle hundredevis af samtiddige brugere, selvom databasen kun understøtter 10.

Generelt set skal databaseforbindelserne være åbne i så kort tid som muligt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester