08. oktober 2003 - 17:26Der er
5 kommentarer og 2 løsninger
Data og objekter forsvinder over lange netværksforbindelser
Hej, har et ganske pussigt problem som så småt er ved at blive til et stort problem. Jeg sidder i en bygning hvor der også står en IIS server, og på denne server har jeg en ASP.NET applikation kørende. Når mine kolleger som sidder i Tyskland og England bruger applikationen, er der ingen problemer - ej heller når jeg bruger den lokalt. Men så snart mine kolleger i indien og USA bruger den, så FORSVINDER data fra nogle af de felter hvor de definerer data. Dette er mest dropdown boxe hvor de vælger en værdi, men kan også være normale tesktfelter med data som de selv indtaster. Jeg har sågar idag set at alle dropdown boxene forsvandt fra skærmen på et bestemt tidspunkt. Det skal siges at min kollega i indien har den dårligste netværksforbindelse af dem alle (intranet), og er også den der rapporterer flest fejl. Det kan tage op til 10-15 sekunder for hans skærm at opdatere, hvor det tager <1 sekund på min skærm når data gemmes. Det skal også nævnes at formen, som de har problemer med, er opbygget af mange felter, knapper og dropdown boxe. Er der nogen der kan give et godt råd til hvordan dette problem kan afhjælpes da det er ved at være et stort problem for mig - et større projekt er ved at gå i stå p.gr.a. dette. 100 stærke points til den som kan hjælpe mig videre.....
Det er selvfølgelig kun teori, men kunne det tænkes at der kom timeouts eller andre connection problemer? Jeg mistænker dig ikke for at lave præcis denne kode:
Næh - ser ikke bekendt ud. Jeg anvender VB og bruger WEB Matrix. Jeg bruger godt nok løkker når jeg læser et recordset fra DB'en (Access), men dette er først efter at jeg har gemt data. Det kommer ikke så langt at data bliver gemt i DB'en, så det er funktionen at poste data tilbage til IIS'en der på een eller anden måde går galt.
Du kan også slå viewstate fra på alle de webcontroller hvor du ikke benytter det. Specielt bliver der genereret ret meget skjult post-data i datagrids og lign. Det slås fra med EnableViewstate="false" i erklæringen af webcontrollerne.
Okay - det vil jeg prøve. Kan du (kort og i menneskeform ;-) forklare hvad denne viewstate gør ? Som du nok kan se er jeg ikke en haj til dette, men forsøger at lære samtidig ;-)
Iøvrigt: Der var engang een der nævnte noget om cashing. Jeg har intet gjort for at slå dette fra. Er det noget jeg skal tænke på, og i så tilfælde, hvorledes gøres dette ?
ViewState sørger for at huske hvad der fx. står i en textbox når du poster siden. I gamle dagen ville tekstboksen være tom efter at du havde posted, men ViewState sørger netop for at holde inputtet "vedlige". Måden det fungerer ved, er at ASP.NET laver et skjult inputfelt, hvor den skriver en masse kode (prøv at vælge view source, og se hvad ASP.NET genererer af kode). De fleste webcontroller har viewstate. Især datagrids, repeatere, datalists osv. kan hurtigt fylde en masse kode, som skal postes frem og tilbage mellem klient og server.
Dette er dog KUN aktuelt for webcontrols der er gemt i en <form runat="server">
odegaard, jeg giver dig 10 points fordi jeg fik en smule bedre forståelse af viewstate ud fra din forklaring, til trods for at det ikke løste problemet. Jeg har nu besluttet at lave det på en anden måde som jeg testede i dag med min kollega fra Indien.
Synes godt om
Ny brugerNybegynder
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.