Problemer med batch-kompilering i asp.net 2.0
Jeg har hatt litt problemer med mine ASP.NET 2.0 prosjekter i det siste. Fra tid til annen dukker følgende melding opp i browseren:
Could not load file or assembly ‘App_Web_xxxxxxxx, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The system cannot find the file specified.
Det viser seg at jeg ikke er alene. På asp.net forumet har man f.eks. diskutert problemet siden april 2006, men man er ikke kommet noe nærmere en løsning. Microsoft har laget en patch som de sier kan fikse problemet (les deres issue-beskrivelse her), men vil ikke la deg laste den ned uten at du kontakter dem med en supportsak. De sier dessuten at du ikke må installere patchen hvis du ikke har opplevd problemet.., skummelt!
Flere som har forsøkt patchen sier også at problemet ikke ble borte.
Problemet er relatert til kompilering (les om kompileringsmoduser i asp.net 2.0 her), og dukker av og til opp når man har endret en eller annen user control - sansynligvis i kombinasjon med bruk av master pages, hvor sidene, user controllene og master pagen batch-kompileres inn i én assembly.
Og nÃ¥r den først har oppstÃ¥tt er feilen vanskelig Ã¥ bli kvitt - man mÃ¥ tvinge en rekompilering, og rÃ¥dene for hvordan man skal gjøre det er mange, men etter min erfaring mÃ¥ man kombinere flere av dem for Ã¥ fÃ¥ det til. Og det som virket i gÃ¥r fungerer ikke nødvendigvis i dag. Det som fungerte for meg pÃ¥ fredag var Ã¥ editere master page’n, og samtidig starte en ny bruker session, sÃ¥ jeg kommer til Ã¥ prøve det neste gang.
Det som er mer skummelt er at det blir rapportert at dette også skjer på produksjonsservere.., med debug=false, og uten at det er foretatt endringer i kode. Det virker på meg som om Microsoft her har en bug de absolutt burde sette mere krutt inn på for å fikse.., dette har nå tatt veldig lang tid, og Microsofts representant på forumet har blitt veldig stille. Hans siste uttalelse kom i juni, og lød:
“Regarding a download of the fix, we don’t ever provide fixes at this stage for public download. (..) Once we go through enough testing, it will be available for download, likely in a SP.”
Det har enda ikke skjedd.











January 15th, 2007 at 8:44 pm
Hvis noen lurer på hva jeg gjorde på fra halv tre til fire i dag så kan dere slutte å lure nå. Feilen oppstod nemlig igjen i dag, så da tenkte jeg jeg skulle følge anbefalingene fra asp.net forumet og forsøke å finne en løsning som virket. Jeg gjorde følgende (for hver test opprettet jeg en ny session mot siten):
* editerte masterpage -> virket ikke
* bygget websiden på nytt i VS -> virket ikke
* IIS reset -> virket ikke
* Rebuild på hele solution -> virket ikke
Ok, fra nÃ¥ av er “virker ikke” inneforstÃ¥tt sÃ¥lenge jeg ikke sier noe annet…
* Editerte den cs filen som i følge feilmeldingen forårsaket problemet
* Editerte baseklassen som alle sidene arver fra
* IIS reset + at jeg slettet alle sitens filer under C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\. Dette var kjempevanskelig, da diverse prosesser holdt på filene. Ifølge forumet skulle dette alltid hjelpe, men ikke hos meg nei.
* Slettet alle de temporære filene på nytt + at jeg editerte masterfilen
* Satte debug=false + en IIS reset
Begynte Ã¥ bli desperat nÃ¥…
* Editerte default.aspx (som var filen jeg lastet). Andre sider fungerte nemlig.
* Fjernet “Allow the precompiled site to be updateable” + rebuild av hele solutionen
* Endret en vilkårlig user control + IIS reset
PÃ¥ dette tidspunktet begynte jeg bare Ã¥ editere diverse filer, men ingenting hjalp, men sÃ¥…
* Editerte ut koden som feilet -> OG DETTE FUNGERTE (SELVFØLGELIG!)
…men fikk samme feilen pÃ¥ en annen side tre sekunder senere. I debug-modus sÃ¥ jeg at applikasjonen nÃ¥ feilet da den aksesserte en session variabel.
* Endret navnet på session-variabelen -> Det virket!!!
Men jeg måtte selvsagt endre navnet tilbake igjen, og da virket det ikke lengre.
* Forsøkte å restarte state servicen -> no luck!
* Diverse endringer på koden som brukte session variabelen, for så å fjerne alle endringene igjen + en ny build
OG NÃ… VIRKER DET!
Inntil videre…
Jeg HATER sÃ¥nne bugs som oppfører seg forskjellig hver gang — og SPESIELT hvis det er Microsoft som har laget dem!
March 27th, 2007 at 10:15 am
En liten oppdatering:
Feilen oppstår fortsatt, gjerne 5-6 ganger pr dag, spesielt ofte hvis jeg editerer filer i App_Code katalogen. Og løsningen jeg har kommet frem til virker hver gang: jeg endrer navnet på session-variabelen (nevnt i forrige kommentar).
Jeg ser ingen grunn til at feilen skulle oppstå eller at fiksen min skulle virke, men jeg har lært meg å leve med det
April 12th, 2007 at 3:26 pm
[…] Jeg har tidligere blogget om et problem med batch-kompilering i ASP.NET 2.0. ScottGu kan i dag melde at de (Microsoft) nÃ¥ endelig har laget en Hotfix for problemet. […]