Avatar billede ttgeek Nybegynder
26. juni 2007 - 21:37 Der er 20 kommentarer og
1 løsning

Statisk variabel nulstilles, hvorfor?

Jeg har en webservice, hvor jeg har erklæret en statisk variabel. Efter noget tid, nulstilles variablen.

Hvad bestemmer hvor lang tid en statisk variabels værdi skal gemmes?
Hvor kan jeg stille på denne faktor?

På forhånd tak :)
Avatar billede kalp Novice
26. juni 2007 - 21:41 #1
En statisk variabel?
Hvis du tænker på dens værdi ikke må ændres så er det vel en constant.

men i hvertfald så nulstilles den vel når din IIS bliver resettet.. det kan ske ret ubevist at denne bliver genstartet - f.eks hvis man piller ved ASP.NET versionen et website skal køre med.
Avatar billede ttgeek Nybegynder
26. juni 2007 - 22:16 #2
Yep, en statisk variabel. Dvs der kun laves én referance til en instans. med andre (c++) ord, en global variabel.

Jeg kan se at efter nogen inaktivitet, så nulstilles den globale variabel. IIS'en bliver ikke genstartet, der bliver ikke smidt nogen exceptions el. lin. Jeg tror det er et opsætningsspørgsmål, måske på applikations niveau i IIS'en?
Avatar billede erikjacobsen Ekspert
26. juni 2007 - 22:19 #3
Du kan ikke bruge en statisk variabel til at gemme resultater i ASP.NET mellem kald af sider, eller forespørgsler på en webservice. Webserveren er selv herre over hvor mange instanser af dine klasser, der laves, og hvor længe de lever.

Hvorfor ikke gemme dine oplysninger i en database?
Avatar billede a1a1 Novice
26. juni 2007 - 22:20 #4
man kan ikke ændre en statisk/constant variabel (men så er det vel heller ikke en variabel ;o) )?

er din variabel defineret i global.asax ? eller såån?? (onapplication load / onsesionstart)?
En standart konfigureret iis på w2k3, recycler applikationen (genstarter applikatione) efter xxx tid uden hits/brug
Avatar billede ttgeek Nybegynder
26. juni 2007 - 22:27 #5
Nogen der kan svare på hvorfor en statisk variabel nulstilles efter nogen tid?
Avatar billede erikjacobsen Ekspert
26. juni 2007 - 22:30 #6
Der er svaret 22:19:34
Avatar billede arne_v Ekspert
26. juni 2007 - 22:30 #7
Efter et stykke tids inaktivitet stopper ASP.NET din web app (teknisk: unloader app domain)
og starter den igen når der er brug for det (teknisk: creater app domain).

Hvis du skal gemme det så skal du persistere.

NB: Du bør i mange tilfælde bruge en singleton klasse fremfor en static variabel,
    men singleton har samme problem med genstart af web app, så den løser ikke
    dit problem.
Avatar billede arne_v Ekspert
26. juni 2007 - 22:31 #8
Erik - antal instanser har ikke meget med static variable at gøre. Det er på
app domain niveau.
Avatar billede erikjacobsen Ekspert
26. juni 2007 - 22:32 #9
Det er vel også en klasse.
Avatar billede arne_v Ekspert
26. juni 2007 - 22:36 #10
Det er også en klasse, men ikke spørgers klasse.
Avatar billede ttgeek Nybegynder
26. juni 2007 - 22:37 #11
Mange tak arne og jer andre.
Arne, smider du et svar? så er der point til dig :)

Jeg har lavet en singleton implementering, så den del skulle være på plads.
Kan man ikke ændre på hvor længe en app må være inaktiv før den unloades? - for en given app that is.
Avatar billede a1a1 Novice
26. juni 2007 - 22:40 #12
squzzi (som de siger i italien): Der er svaret 22:19:34
? hvad mener du (er det svaret?), en statisk variabel/constant er vel static/read only?
så hvordan vil du lave den om?
Avatar billede a1a1 Novice
26. juni 2007 - 22:43 #13
du skal ændre iis opsætningen
HVOR ER DIN "VARIABEL"????? HVORDAN/HVORFOR ER DEN DER/HVOR FÅR DU DEN FRA????
Avatar billede ttgeek Nybegynder
26. juni 2007 - 22:45 #14
sorry a1, men det var ikke lige det svar der løste mit problem. No hard feelings?
Avatar billede erikjacobsen Ekspert
26. juni 2007 - 22:46 #15
En statisk variabel er ikke read-only.
Avatar billede arne_v Ekspert
26. juni 2007 - 22:49 #16
static betyder per-class fremfor per-object og den kan sagtens ændres
Avatar billede arne_v Ekspert
26. juni 2007 - 22:49 #17
Jeg mener at man kan ændre det i machine.config processModel.
Avatar billede ttgeek Nybegynder
26. juni 2007 - 22:53 #18
ok, super tak. jeg kigger nærmere på det.
Avatar billede a1a1 Novice
26. juni 2007 - 22:54 #19
very hard.... ;o)

Nej, jeg er (lidt/meget) ligeglad med points, kan jo ikke bruge dem til noget, men jeg har ikke givet dig et forkert svar, og også fortalt hvorfor (En standart konfigureret iis på w2k3, recycler applikationen (genstarter applikatione) efter xxx tid uden hits/brug)

Du spurgte jo om HVORFOR det skete....

men fuck det, bare du har fået dine ting til at virke, det er jo altid godt ;o)
Avatar billede arne_v Ekspert
07. juli 2007 - 04:35 #20
Din korrekte udtalelse om ASP.NET web app recycle druknede nok lidt i den første (forkerte)
del om at man ikke kan ændre en static ...
Avatar billede arne_v Ekspert
07. juli 2007 - 04:37 #21
Jeg ligger et svar, så må spørger lige dobbelt checke hvad der er skrevet og hvem
han vil give point.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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