Hej ! Det här är en grymt hård nöt att knäcka men är löst i asp.net 2.0 på ett ngt bättre sätt. Mmm tycker det är väldigt klurigt. Med en http module ;) Jag satt och funderade på det för en stund sedan. Men du! Kan du inte labba och lösa det ? Tänk vilken grymt smart lösning du skulle komma på ! Hej, Det där kan nog hjälpa mkt bra för då gör man väl en typ av "interception". Ska labba runt lite med det återkommer med resultat. Tackar! Jag har labbat lite med SavePageStateToPersistenceMedium etc. och fått det att fungera bra. Vad jag inte lyckats med är att komma på något schyst sätt att rensa sessionen från viewstate-data (annat än vid session time-out/log off). Har man många sidor och många användare går det snart åt en hel del minne (om man inte sparar sessionen i databasen vill säga). Jag har därför gjort det möjligt att också kunna spara viewstate-data på disken i helt vanliga filer, vilket också fungerar bra. Men, om någon kommer på ett "mönster" som innefattar "aktiv städning" av minnet är detta något jag gärna tar del av... Hej,Att komma ifrån en stor Viewstate
Är det någon som kan rekommendera ett sätt att komma ifrån/krympa ner viewstate på riktigt tunga sidor. Har just nu en webform som använder sig av en 3'e parts TabItems kontroll,där var tabitem är en usercontrol. Sedan har jag utvecklat egna komposita serverkontroller som används inuti dessa webuserkontroller. Allting verkar sparas ner i viewstate och det blir gigantiskt till slut vilket slöar ner applikationen otroligt mycket.
Hur går jag tillväga bäst för att spara ner state i, tjaa jag vet inte session kanske? Jag vill gärna undvika buggar som att sidor håller kvar info (som gärna händer när man sparar ner i session)
Men jag vill ju ha viewstate-effekten där t.ex griddar sparar info, textboxar håller text etc och så jag kan komma åt dem via Kontrol.Property på postbacks.
Det jag söker är alltså en bra arkitektur/designpattern för att komma åt detta problem, kåd är inga problem bara jag vet en bra arkitektur som lämpar sig för just detta. Jag undviker gärna URLqueries.
Det rör sig om kanske 20 användare samtidigt under dagen som jobbar ganska intensivt med applikationen.
Hoppas någon kan komma med några bra förslag
Mvh, Rickard RobinSv: Att komma ifrån en stor Viewstate
Problmet är att som du säger att du bara vill associera just en visst request med sitt viewstate.
För att lösa det här snyggt så tror jag att en kombination av interception och page controller kan bli en riktigt bra lösing.
Jag skulle nog skapat en http module som läser / skriver viewstate filer till och från en sessions variabel någonstans i början och någonstans i slutet av en request (interception). Sen hade jag skapat en ny basklass för mina sidor, som vid lämpligt event fyller kontrollerna med den datan som finns där. I ett annat lämpligt event kan det vara bra att skriva data från kontrollerna.Sv:Att komma ifrån en stor Viewstate
Pagecontroller använder jag, dock har jag inte den tiden att labba med httphandler och httpmodule och att förändra requests på det djupet. Finns det något snabbare och effektivt "best practise" man kan använda eller så ? Hur brukar ni lösa det?Sv: Att komma ifrån en stor Viewstate
Undrar om man inte kan byta ut viewstate modulen helt och hållet ..... Sv:Att komma ifrån en stor Viewstate
Just det, förresten när du är klar kan du ju skicka över koden så jag kan använda den också :D
Vore väldigt smart om när man utvecklar en komposit servercontrol att kunna tillåta en property där man väljer spara ner i "Viewstate" eller "Session", och på något sätt få serverkontrollen att jobba så automatiskt. Hur gör man det? Nån expert måste ju veta svaret ....
(Om man har fler kontroller vill gärna sessionobjekt krocka och skriver över varandra, kanske lösa med Inamingcontainter på nåt vis?)
Tror om man löser detta smart skulle många utvecklare bli glada!
/Rickard RobinSv: Att komma ifrån en stor Viewstate
Jag föreslår att du istället gör en egen Page-klass. Den skall givetvis ärva från Page-klassen men två metoder skall overridas:
SavePageStateToPersistenceMedium
LoadPageStateFromPersistenceMedium
Dessa metoder sparar och laddar in ViewState på en sida. I dessa metoder kan du sedan välja hur och var ViewState skall sparas.
Det fina med detta är att alla kontroller som läggs på en sådan sida automatiskt sparar sin ViewState enligt dina val.
Ett annat tips är att sätta EnableViewState=false på de kontroller där du inte behöver ViewState :)
mvh
HerbjörnSv:Att komma ifrån en stor Viewstate
Sv: Att komma ifrån en stor Viewstate
Sv:Att komma ifrån en stor Viewstate
Ett sätt är att endast tillåta en viss mängd ViewState per användare / session. T.ex. endast tillåta att en användare får spara ViewState 5 el 10 gånger (sidladdningar) per session. Om mer ViewState behöver sparas skrivs "gammal" ViewState över.
Om detta inte går bra är nog en databaslösning att föredra.
mvh
Herbjörn