miércoles, 6 de febrero de 2008

.NET AJAX Control Toolkit problema con javascript (Sys is not defined)

Ultimante me encontre con un problema con esta libreria de .NET, pero el problema no era en desarrollo si no que en produccion, asi que era aun mas preocupante.

El error es que al cliente le muestra un error de javascript, el cual dice que la variable "sys" no es definida.

Causa:
AjaxControlToolkit, ocupa recursos embedidos, es decir los controles contienen sus propios js, imagenes y css, lamentablemente estos no logran ser interpretados o procesados por servidor.

Esta es la linea que agrega el control, para llamar a un javascript


<script src="/WebSiteControl/WebResource.axd?d=Tm3Cyn9D......" type="text/javascript"></script>

Solucion:
como IIS, o el servidor de desarrollo, no logra interpretar la extensiones "axd"(esto es curioso, en mi caso estaban configurado para que los interpretara iisapi.dll) hay que agregar las siguientas lineas en el web.config.




<httpHandlers>
<remove verb="*" path="*.asmx" />
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" />
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" />
<add verb="GET,HEAD" path="ScriptResource.axd"type="System.Web.Handlers.ScriptResourceHandler,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" validate="false" />
</httpHandlers>

Esto va dentro del tag "Web.config" de esta forma nuestro application Server sabra que hacer cuando se encuentre con una extension "axd"

--
Atte.
Víctor Hugo Saavedra.
http://vhspiceros.blogspot.com

48 comentarios:

  1. Muchas Gracias!!! Me ha sido de gran ayuda lo del WebConfig!!
    Ya estaba a punto de explotar xq no encontraba la razon logica del error de 'Sys'... Gracias!!!

    ResponderEliminar
  2. De nada. esa es la idea.
    compartir y acordarme de las cosas que uno va solucionando de apoquito.

    ResponderEliminar
    Respuestas
    1. Muchas gracias el tema no solo se me estaba presentando con los controles toolkit sino tambien con ajax extensions (Update Panel, Update progress etc) pero con eso se solucionó...

      Eliminar
  3. a mi me aparece el mismo error, comenze un nuevo web site, un ASP.NET AJAX-Enabled web site. Y asi sin escribir nada de codigo,abri la pagina en un navegador, esperando que saliera nada, efectivamente, salio la hoja en blanco pero firebug me ha dicho del error:


    Sys is not defined

    Sys.Application.initialize();

    alguien tiene una solucion?

    ResponderEliminar
  4. agregaste las lineas en el web.config que aparecen mas arriba en el blog???

    ResponderEliminar
  5. ¡Gracias por el dato!
    Hoy me sucedió esto y no me podía dar cuenta cual era el problema. El Web.config no es un lugar en donde uno vaya a buscar la solución a un problema como este...

    ResponderEliminar
  6. de nada Gerardo :). Esa es la idea de tener el blog.

    A proposito esta bien bueno tu blog.

    --
    Atte.
    Victor Hugo Saavedra
    http://vhspceros.blogspot.com

    ResponderEliminar
  7. Hola , tengo el mismo problema : "Sys is not defined", pero ademas me manda otro mensaje : "Error al cargar el marco de trabajo de cliente ASP.NET Ajax", alguien podria ayudarme con esto?, gracias !

    ResponderEliminar
  8. Las líneas en el web.config solucionaron el problema cuando el control ScriptManager estaba en una página normal, pero cuando coloco el ScriptManager en la master page ocurre el mismo error, a pesar de las líneas en el web.config.

    ResponderEliminar
  9. Gerónimo: necesitas un ScriptManagerProxy en la página contenida.

    ResponderEliminar
  10. haaaa, soy el mejor, yo nunca tuve ese problema

    ResponderEliminar
  11. Hola, yo tengo en mi aplicación un ScriptManager y me muestra varios errores javascript como que "Sys no esta definido" o "Type no esta definido".
    Tengo en el web.config lo mismo que se sugiere en este blog, lo único que cambia es la versión que estoy utilizando porque utilizo ajax 3.5 con ASP.net
    Mi web.config tiene esto:
    ........Version=3.5.0.0, Culture=neutral.....


    Alguien me puede orientar un poco porfavor?????
    Gracias.

    ResponderEliminar
  12. Tengo el mismo problema; estoy usando Framework 3.5, Asp.Net y Ajax.

    En el web config no tengo que poner nada porque esas líneas ya existen.

    El gran problema es que en local si me sirve, pero si mudo la aplicación web a un servidor web y lo ejecuto, el resultado es que no ocurre la comunicación asíncrona y me aparecen estos errores que me muestra Firefox:

    - Error al cargar el marco de trabajo de cliente Asp.Net Ajax.

    - Sys is not defined.

    ¿Alguna solución?

    ResponderEliminar
  13. tienes instalada la misma version del ajax control toolkit??

    primero tienes instalo el ejax control toolkit y el web extension en el servidor???


    --
    Atte.
    Victor Hugo Saavedra

    ResponderEliminar
  14. Sí, tengo todo instalado. Inclusive hasta puse los assemblies en la carpeta Bin del proyecto Web aunque eso era innecesario porque esas referencias ya existen. (Estoy usando VB.Net Framework 3.5)

    Pero encontré una solución, aunque no me gusta pero la voy a usar mientras descubro por qué al mudar el proyecto a un servidor web totalmente independiente de VS 2008, el Ajax no trabaja para nada?

    La solución fue muy simple y consistió en descargar los archivos javascript de Ajax .Net y ponerlos en una carpeta y luego establecí las referencias correspondientes con la directiva script en el Head del masterpage que estoy usando.

    Los archivos que el ScriptManager carga son: MicrosoftAjax.js, MicrosoftAjaxWebForms.js y MicrosoftAjaxTimer.js. El último no es necesario ponerlo para lo que estoy haciendo.

    Basándome en la teoría, es el ScriptManager el encargado de cargar las bibliotecas *.js de Ajax .Net pero por desgracia para mí no está funcionando en producción y por eso las tuve que poner a pata, jaja!

    ResponderEliminar
  15. por lo menos funciona, si alguna vez recuerdo trate de hacer lo mismo, pero no me funciono :(

    que bueno que pudiste solucionar tu problema.

    ResponderEliminar
  16. Muy buen blog.

    Código Maestro
    http://www.codigomaestro.com/

    ResponderEliminar
  17. si no funciona el script del web config lo unico que tienen que cambiar es la version del system.web extension de la version 1.0.61025.0 por la version 3.5.0.0 y funciona

    ResponderEliminar
  18. demasiadas gracias, me sacaste de un tremendo cacho!!!!!

    gracias totales!!!

    ResponderEliminar
  19. pero en q parte del web config va dentro de que etiquetas

    ResponderEliminar
  20. Muchas gracias... hace un momento no me estaba funcionando el ajax control toolkit y el update panel.
    Con este Tip lo arreglé

    ResponderEliminar
  21. Genial!!! era lo que buscaba.

    hay que ponerlo dentro de la etiqueta system.web

    Gracias

    ResponderEliminar
  22. Gracias!! era justo mi problema!!

    Desde Cordoba.Argentina

    ResponderEliminar
  23. yo tengo el siguiente problema :La aplicaciòn trabaja bien en la web, pero localmente me muestra el siguiente error

    Mensaje de error del compilador: BC30560: 'ScriptManager' es ambiguo en el espacio de nombres 'System.Web.UI'.

    agradezco cualquier ayuda que me puedan brindar

    ResponderEliminar
  24. yo tengo lo siguiente y el error me da de forma aleatoria:

    ResponderEliminar
  25. yo tengo lo sigueinte y me da de forma aleatoria, alguien sabe como solucionarlo?, gracias ( cambio los < y lo > por - ).

    -httpHandlers-
    -remove verb="*" path="*.asmx" /-
    -add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" /-
    -add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" /-
    -add verb="GET,HEAD" path="ScriptResource.axd"type="System.Web.Handlers.ScriptResourceHandler,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" validate="false" -
    -/httpHandlers-

    ResponderEliminar
  26. Yo tengo lo siguiente y el error me da en forma aleatoria, alguien sabe como solucionarlo?? gracias ( cambie los < y > por - )

    -httpHandlers-
    -remove verb="*" path="*.asmx"/-
    -add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/-
    -add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/-
    -add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/-
    -/httpHandlers><httpModules-

    ResponderEliminar
  27. Muchas gracias esto fue super util ya estaba volviendome loco

    ResponderEliminar
  28. de mada DarkSun. esa es la gracia del blog, es ver problemas que yo tengo, para despues verla en el tiempo. pero si le sirve a mas gente bienvenido sea o no?

    ResponderEliminar
  29. Hola

    Funciono tambien esta solucion para mi.

    La seccion del web.config critica resulto ser:

    ResponderEliminar
  30. Yea si funciona cambiando el texto de la version 1.0.61025.0 por la version 3.5.0.0

    ResponderEliminar
  31. yo tengo el mismo problema pero este blog no me lo soluciona,

    ayudenme, jejej
    en el web config tengo esto








    y me sale

    - Error al cargar el marco de trabajo de cliente Asp.Net Ajax.

    - Sys is not defined.

    ResponderEliminar
  32. no salio lo del web config, bueno tengo lo mismo con la excepcion que tengo otra linea mas

    add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"

    ResponderEliminar
  33. haa y este error tambien me sale


    Mensaje: Carácter no válido
    ScriptResourse.axd
    Línea: 1
    Carácter: 1
    Código: 0
    URI: http://localhost:4052....

    les agradeceria si alguien me puede guiar

    ResponderEliminar
  34. hola ENFOR.

    primero algunas preguntas
    ¿no te funciona ningun control de ajaxcontroltoolkit ote funciona y te sale un error?

    ¿version de .net y ajaxcontroltoolkit'



    puedes probar creando un proyecto con extension para ajaxcontroltoollkit creo que se llama, y ahi ver si te funcionan los controles basicos.

    --
    Atte
    Víctor Hugo Saavedra.
    http://vhspiceros.blogspot.com

    ResponderEliminar
  35. la verdad estoy intentado crear otras caracteristicas de ajax como un boton que me modifique un campo en una base de datos sin tener que refrescar la pagina y no me funcionan los toolkit, pero si le quito todo el codigo del otro ajax si funcionan y si le quito el ajaxtoolkit si funciona el otro. y no se que hacer

    la otra pag de ajax es:

    http: //www. scourdesign.com/articulos/tutoriales/net/6.php

    gracias de antemano

    ResponderEliminar
  36. Muchas gracias me sirvio de referencia.

    ResponderEliminar
  37. Esto es genial, ya que aun que es un tema antiguo, para quienes estamos aprendiendo nos sirve de mucho, pude resolver el problema con ésta guia y ademas con la ayuda de quien dijo que habia que cambiar la extension de la version 1.0.61025.0 por la version 3.5.0.0. Muchas gracias a todos :D

    ResponderEliminar
  38. Muchisimas gracias amigo tenía horas intentando solucionar el bendito problema, nunca me hubiera imaginado q el inconveniente era de producción se soluciono el problema y a seguir programando gracias nuevamente!!!!!!

    ResponderEliminar
  39. En mi aplicacion de desarrollo si anda todo bien, pero al migrarlo a una ambiente productivo, truena en esa parte.
    ASP.NET Ajax client-side framework failed to load
    y
    'Sys' no esta definido.

    Los Assembly's los tengo correctamente, agregue tmb el ScripManagerProxy y nada :S
    Al momento de construir el sitio no me indica ningun error, lamentablemente no tengo accesso al IIS para verificar la configuración de mi site.

    Ojala alguien tenga una solución aunq sea alternativa.
    Saludos

    ResponderEliminar
  40. Hola soy de abctv.mobi y me ha servido de mucho el aporte muchisimas gracias ahora todo me funciona me estaba volviendo loko con el timer, update panel y ScriptManager para una apli de chat.

    ResponderEliminar
  41. Hola! A mi me aparece este problema al publicar mi sitio en la en la web. si lo uso dentro de mi intranet anda perfecto, pero si invoco el mismo sitio en el mismo servidor pero desde una url de internet aparece el error.

    Alguna sugerencia?

    ResponderEliminar
    Respuestas
    1. Hola mi web.config no tiene el tab web.config, me pueden explicar en que parte ca el tag?
      gracias

      Eliminar
    2. Hola,

      Una pregunta a que te refieres con que tu Web.config no tiene el tab de web.config
      Esto debería estar en system.web mira http://msdn.microsoft.com/es-es/library/bya7fh0a(v=vs.80).aspx

      Eliminar
  42. Excelente!....muchas gracias...me sirvió de gran ayuda!

    ResponderEliminar
  43. buenos dias
    para comentarles un problema que me esta sucediendo a ver si ustedes me pueden ayudar.
    el inconveniente es q cuando su lo emigro a producción no me funciona el calendarExtender de ajax local si funciona pero en producción no lo curioso es que en unos formularios si me toma esta extencion
    pero en otros formularios no me lo esta tomando, tengo esta extencion (calendarExtender ) en un combobox y ya realice los pasos en el web.confing que mencionan en este post

    gracias de antemano

    ResponderEliminar