ASP.Net mit AJAX und das upgraden alter Applikationen

In den letzten Wochen habe ich ein Ursprüngliches ASP.Net 1.1 Projekt das auf ASP.Net 2.0 geupraded wurde um AJAX kontrollen erweitern müssen. Dabei sind mir ein paar Stolpersteine aufgefallen die zu ernsten Problemen führen können und nicht ohne weiteres ersichtlich sind.

Wenn man ein altes Projekt mit den AJAX kontrollen erweitern möchte sollte man folgende Punkte beachten:

  • Ist eine Zugriffsverwaltung in der Applikation implementiert (z.b. automatische Umleitung) sollte dringends drauf geachtet werden, dass die Regeln für diese so angepasst werden, dass man Zugriff auf die ScriptResource.axd hat. Ohne diese Datei funktioniert gar nichts und man bekommt die schöne Meldung das „Sys“ nicht definiert sei.
  • Wenn alles schick gerendert wird, beim click auf Kontrollen trotzdem keine Ajax Funktionen gefeuert werden sollte man überprüfen ob zufällig noch der „legacy“ mode in der Web.Config steht (in der Sektion „System.Web“): ‚<xhtmlConformance mode=“Legacy“/>‘. Ist dieser gesetzt sollte dringend überprüft werden ob dies nötig ist und wenn nicht rausschmeißen. Im Legacy mode werden noch die alten Separatoren in den Controlnamen generiert (früher „:“ heute „$“), damit kommen die Ajax Scripte aber nicht klar. Sind noch CustomControls im Einsatz die die ID von Hand zusammenbasteln sollten diese angepasst werden das sie mit der ClientID der Controls arbeiten.
  • Hat man nach partiellen Postbacks „?“ statt Umlaute oder Sonderzeichen liegt das wahrscheinlich am „globalization“ Eintrag in der Web.Config. Offenbar kommt Ajax nicht mit anderen Zeichensätzen als utf-8 klar. egal welcher Eintrag hier steht es wird bei partiellen Updates utf-8 zurück gesendet. Möglicherweise kann man dafür sorgen das der Zeichensatz auch dann den in der Web.Config definierten Wert aufweist, allerdings ist mir nicht bekannt wie (wenn jemand einen Hinweis hat bitte einen Comment hinterlassen :)).

Das Sammeln dieser Hinweise hat mich den einen oder anderen schweißgebadeten Tag Fehlersuche gekostet, ich hoffe sie helfen 😉