Problemer med callback
Halløj eksperter,jeg har et temmeligt skummelt problem med den usercontrol jeg sidder og udvikler. Jeg benytter callbacks (ASP.NET 2.0) til at hente noget af det data, der præsenteres for brugeren. Dette sker når brugeren klikker på bestemte elementer.
Jeg har implementeret en klasse (DataViewerControl) der implementerer interfacet ICallbackEventHandler. Denne klasse indeholder de metoder der skal tage sig af callback requests. Jeg indsætter efterfølgende javascript-kode på diverse elementer (<img> tags i det her tilfælde), som sørger for at lave de nødvendige callbacks til serveren:
this.Page.ClientScript.GetCallbackEventReference(_dataviewercontrol, "message", "callbackHandler","context","onError",true);
Når man kalder den pågældende side, sørger ASP.NET enginen jo for selv at indsætte en reference til det påkrævede javascript-dokument, der indeholder callback logikken (<script src="WebResource.axd?blablabla">). MEN dette gør den kun første gang man kalder siden! På alle efterfølgende requests bliver referencen til dette javascript ikke indsat, hvilet selvfølgelig medfører at mine callbacks fejler (object not found). Når siden en gang har været kaldt er det nødvendigt at genstarte webserveren før skidtet virker igen! Og det uanset hvilken browser man benytter; hvis jeg eksempelvis laver første request med Internet Explorer, fejler den efterfølgende i Firefox, når jeg prøver at hente selvsamme side her. Dvs. det skyldes ikke noget caching i browseren og det skyldes ligeledes heller ikke kontroller der ikke bliver initialiseret korrekt pga. postbacks.
Det sjove er at hvis jeg implementerer en wrapper-webpart rundt om denne user control og indsætter den i et SharePoint miljø virker det fint - referencen til callback javascript-dokumentet bliver her indsat hver gang uden problemer. Jeg har prøvet at deploye applikationen til en anden maskine (for at udelukke at en buggy IIS/ASP.NET runtime kunne være årsagen), men det er samme resultat på begge maskiner.
Jeg har ligeledes prøvet manuelt at refere til det pågældende javascript-dokument. Omtrent samme resultat: Her bliver referencen selvfølgelig indsat, men den fejler stadig ved andet request med en javascript-fejl: 'theForm is undefined'. Jeg kan se at 'theForm' er en variabel de (Microsoft) definerer i callback scriptet. Jeg kan simpelthen ikke se at at der noget forskel i output på første og andet request. Jeg har prøvet at debugge igennem applikationen og den kører igennem applikationen på nøjagtig samme måde hver gang.
Jeg ved ikke rigtig om det hjælper at poste min kode (der er temmelig meget - mere end der lige kan overskues ved at poste det her). Den overordnede struktur kan dog beskrives således:
Applikationen består af en række indlejrede usercontrols (6 niveauer i alt). Hver usercontrol er mere eller mindre ens i virkemåde: Load data via et manager-objekt og rendér data sammen med alle childcontrols. Al data renderes fint uden problemer. Kald af callbacks ligeså. Det eneste der ikke virker er altså referencen til callback-javascriptet.
Er der nogen herinde der har haft tilsvarende problemer med callbacks og manglende reference til callback-scriptet???