Cómo hacer funcionar correctamente el AjaxControlToolkit en una aplicación cookieless (revisado)

Creado el día 29/12/2007 08:12 por zorry

Revisando el fix que hice ayer, y debido sobre todo a que no me gusta hacer modificaciones en librerías que no dependen de mí (sobre todo, para evitar que en una nueva release del AjaxControlToolkit me machaquen los cambios), me he fijado en una propiedad del ToolkitScriptManager denominada CombineScriptsHandlerUrl. Esta propiedad permite especificar un handler específico para manejar la combinación de todos los script del AjaxControlToolkit. De modo que me dispongo a deshacer los cambios que hice ayer, y hago varios cambios en mi aplicación web:

  • En la definición del ToolkitScriptManager, he incluído el siguiente atributo: CombineScriptsHandlerUrl="~/CombineScriptsHandler.ashx"
  • He creado un nuevo handler en la aplicación con el nombre definido en el nombre anterior. En el archivo ashx he introducido el siguiente código:

 

   1: <%@ WebHandler Language="C#" Class="CombineScriptsHandler" %>
   2: 
   3: using System;
   4: using System.Web;
   5: using AjaxControlToolkit;
   6: 
   7: public class CombineScriptsHandler : IHttpHandler
   8: {
   9:     /// <summary>
  10:     /// ProcessRequest implementation outputs the combined script file
  11:     /// </summary>
  12:     /// <param name="context"></param>
  13:     public void ProcessRequest(HttpContext context)
  14:     {
  15:         if (!ToolkitScriptManager.OutputCombinedScriptFile(context))
  16:         {
  17:             throw new InvalidOperationException("Combined script file output failed unexpectedly.");
  18:         }
  19:     }
  20: 
  21:     /// <summary>
  22:     /// IsReusable implementation returns true since this class is stateless
  23:     /// </summary>
  24:     public bool IsReusable
  25:     {
  26:         get { return true; }
  27:     }
  28: }
  29: 

Con estos cambios por fin he conseguido que la aplicación funcione correctamente en modo cookieless, y sin los problemas de javascript que me estaba encontrando anteriormente.


Comentarios no permitidos