usando net mvc from examples example asp asp.net javascript asp.net-ajax

asp.net - mvc - usando ajax asp net



Sys no está definido (30)

Añadir

if (typeof(Sys) !== ''undefined'') Sys.Application.notifyScriptLoaded();

Por favor, marque la descripción del enlace aquí

Tengo un proyecto de kit de control ASP.Net/AJAX en el que estoy trabajando. 80% de las veces no hay problema. La página se ejecuta como debería. Si actualiza la página, a veces mostrará un error de javascript "Sys no está definido".

No sucede todo el tiempo, pero es reproducible. Cuando sucede, el usuario debe cerrar su navegador y volver a abrir la página.

Esto me lleva a creer que podría ser una configuración de IIS.

Otra nota. Miré la fuente de la página tanto cuando recibo el error como cuando no. Cuando la página arroja errores, falta el siguiente código:

<script src="/ScriptResource.axd?d=EAvfjPfYejDh0Z2Zq5zTR_TXqL0DgVcj_h1wz8cst6uXazNiprV1LnAGq3uL8N2vRbpXu46VsAMFGSgpfovx9_cO8tpy2so6Qm_0HXVGg_Y1&amp;t=baeb8cc" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ if (typeof(Sys) === ''undefined'') throw new Error(''ASP.NET Ajax client-side framework failed to load.''); //]]> </script>


Además de garantizar que tenga el ScriptManager en su página, debe asegurarse de que su web.config esté configurado correctamente.

Cuando se lanzó ASP.NET AJAX 1.0 (para .NET 2.0) hubo una gran cantidad de configuraciones web.config personalizadas que agregaron controladores, controles, etc.

Encontrará la información de configuración aquí: http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx


Asegúrese de no tener ninguna regla de Reescribir que cambie su url.

En mi caso, la aplicación pensó que solo era más profunda que la url alcanzada.

Ejemplo: http://mysite.com/app/page.aspx era la url real. Pero corté / app / esto funcionó bien para ASP.net y WCF, pero claramente no para Ajax.


Asegúrese de que los scripts de cliente que tenga que interactúen con .NET AJAX tengan la siguiente línea al final:

if (typeof(Sys) !== ''undefined'') Sys.Application.notifyScriptLoaded();

Esto le dice al administrador del script que todo el archivo de script se ha cargado y que puede comenzar a llamar a los métodos del cliente


Cuando experimenté los errores

  • Sys no está definido
  • El marco del lado del cliente Ajax de ASP.NET no se pudo cargar

en IE cuando usaba controles ASP.NET Ajax en .NET 2.0, necesitaba agregar lo siguiente al archivo web.config dentro de las etiquetas <system.web> :

<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="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler" validate="false"/> </httpHandlers>


Debe agregar estas líneas en la 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> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </httpModules> </system.web>

Espero que esto ayude.


En caso de que nada de lo anterior funcione para usted, y usted está anulando OnPreRenderComplete, asegúrese de llamar a base.EnPrederCompleto. Mi terapeuta va a estar feliz de verme de vuelta


En mi caso, el problema era que había puesto el siguiente código para mantener el Tablero de tabla de gridview después de la devolución de datos parcial:

protected override void OnPreRenderComplete(EventArgs e) { if (grv.Rows.Count > 0) { grv.HeaderRow.TableSection = TableRowSection.TableHeader; } }

La eliminación de este código detuvo el problema.


En mi caso, encontré una razón muy escondida ... Había una ruta de esta página en Global.ascx.cs que no aparece en mis pruebas en las subcarpetas pero devuelve el error de la pregunta todo el tiempo ... otra día con problemas extraños.

routes.MapPageRoute("siteDefault", "{culture}/", "~/default.aspx", false, new RouteValueDictionary(new { culture = "(//w{2})|(//w{2}-//w{2})" }));


Encontré el error al usar una combinación de Ajax Control Toolkit ToolkitScriptManager y URL Write 2.0.

En mi <rewrite> <outboundRules> tenía una condición previa:

<preConditions> <preCondition name="IsHTML"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html"/> </preCondition> </preConditions>

Pero aparentemente algunas de mis reglas de salida no estaban configuradas para usar la precondición.

Una vez que tuve esa precondición establecida en todas mis reglas de salida:

<rule preCondition="IsHTML" name="MyOutboundRule">

No más problema


Estaba teniendo el mismo problema y después de muchas discusiones decidí tratar de aislar el problema y simplemente cargar el gestor de scripts en una página vacía que aún producía el mismo error. Habiendo aislado el problema, descubrí a través de una comparación de web.config de mi sitio con un sitio de prueba nuevo (en funcionamiento) que cambiando <compilation debug="true"> a <compilation debug="false"> en la sección system.web de my web.config soluciona el problema.

También tuve que eliminar la entrada <xhtmlConformance mode="Legacy"/> de system.web para que el panel de actualización funcione correctamente. Haga clic aquí para obtener una descripción de este problema.


Estaba teniendo un problema similar, excepto que mi página generaba sistemáticamente el error Sys es indefinido.

Para mí, el problema se debe al hecho de que acabo de instalar la extensión AJAX 1.0 para .NET 2.0, pero ya había creado mi proyecto web en Visual Studio.

Cuando intenté crear controles AJAX seguí encontrando este error, vi las publicaciones de Slace y MadMax1138 aquí. Y pensé que era mi web.config, creé un nuevo proyecto utilizando el nuevo tipo de proyecto "AJAX habilitado", y con seguridad el web.config tiene una gran cantidad de personalizaciones necesarias para usar los controles AJAX.

Acabo de actualizar esa web.config con las actualizaciones web.config que ya había hecho y la dejé en mi proyecto existente y todo funcionó bien.


Estaba usando telerik y tenía exactamente el mismo problema.

agregando esto a web.config resuelto mi problema :)

<location path="Telerik.Web.UI.WebResource.axd"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location>

tal vez te ayude también. fue un problema de autenticación.

Source


Esto va a sonar estúpido, pero tuve un problema similar con un sitio que se está desarrollando en VS2010 y alojado en el servidor VS Dev. La página en cuestión tenía un administrador de scripts para crear la conexión a un servicio wcf. Agregué un método adicional al servicio y este error comenzó a aparecer.

Lo que lo solucionó fue cambiar de ''Autoasignar puerto'' a ''Puerto específico'' con un número de puerto diferente en la configuración web de oroject.

Desearía saber por qué ...


He estado viendo exactamente el mismo error hoy, pero no fue un problema de configuración o de JavaScript directo.

Se ha actualizado un proyecto de .NET externo pero los cambios no se recogieron correctamente en la compilación del sitio web. Mi presunción es que ASP.NET ajax no fue capaz de construir las representaciones del cliente de los objetos .NET correctamente y por lo tanto no se pudo cargar correctamente.

Para resolverlo, reconstruí el (los) proyecto (s) externo (s) y reconstruí mi solución que estaba experimentando problemas. El problema desapareció


Hola, muchas gracias, resolvió mi problema,

Por defecto vs 2008 agregará

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

Es necesario corregir la configuración predeterminada (arriba) al siguiente código FIX

<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="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler" validate="false"/>


Incluso después de agregar la entrada correcta para la configuración web sigue recibiendo este error? La razón más común para este error es JavaScript que hace referencia al espacio de nombre Sys demasiado pronto. Entonces la solución más obvia sería mover el bloque de script java debajo del control ScriptManager:


Intente configurar su ScriptManager a esto.

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />


La respuesta de Dean L, https://.com/a/1718513/292060 funcionó para mí, ya que mi llamada a Sys también fue demasiado pronto. Como uso jQuery, en lugar de moverlo hacia abajo, coloque el script dentro de una llamada a document.ready:

$(document).ready(function () { Sys. calls here });

Esto parece ser lo suficientemente tarde como para que Sys esté disponible.


No creo que se haya agregado este punto y dado que acabo de pasar un tiempo buscando esto, espero que pueda ayudar.

Estoy trabajando con IIS 7 y utilizando ASP.NET v4 Framework.
En mi caso, era importante que se agregara una entrada a la sección y a la sección de la entrada en el archivo web.config.

Mi archivo web.config tiene muchos controladores y en mi caso fue más fácil agregar la entrada ScriptResources a la parte superior de la sección de controladores. Lo más importante es que debe colocarse antes de cualquier entrada que actúe como un comodín y capture la solicitud. Si lo agrega después de una entrada de comodín hará que se ignore y el error seguirá apareciendo.

El módulo se puede agregar a la parte superior o inferior de la sección.

Muestra de Web.config:

<system.webServer> <handlers> <clear /> <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <!-- Make sure wildcard rules are below the ScriptResource tag --> </handlers> <modules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <!-- Other modules are added here --> </modules> </system.webServer>


Odio añadir a un tema tan grande y mucho más tarde, pero creo que tengo una solución que funciona en VS2015 por lo menos.

Estaba buscando un motivo para el error de sys, y la única solución que funcionó para mí fue agregar EnableCdn="true" en un ScriptManager como este:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true" />

Vea MSDN para más información.

¿Por qué tenemos que hacer esto?

Al trabajar en una aplicación web asp.net, debe habilitar CDN para que Microsoft pueda descargar el Sys. biblioteca.

Probablemente haya un script en su página que estaba usando la función Sys . Establecer EnableCdn="true" aseguraría que la biblioteca Sys se descargue antes de ser utilizada.

¿Qué es CDN?

Una cita de https://www.sitepoint.com/7-reasons-to-use-a-cdn/

La mayoría de los CDN se utilizan para alojar recursos estáticos, como imágenes, videos, clips de audio, archivos CSS y JavaScript. Encontrará bibliotecas de JavaScript comunes, calzas HTML5, restablecimientos de CSS, fuentes y otros activos disponibles en una variedad de sistemas CDN públicos y privados.

Tanto Google como Microsoft tienen CDN. Todo lo que tienes que hacer es agregar una referencia. Por lo general, las CDN se agregan a través de un recurso de script:

<script src="https://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjax.js" type="text/javascript"></script>

Una vez que establezca EnableCdn="true" Microsoft agregará su pequeña referencia CDN (como la anterior) en la página que descarga la biblioteca Sys .

Espero que ayude a cualquiera que se encuentre con el mismo problema.


Por favor, por favor, compruebe que el servidor tenga la hora y fecha correctas establecidas ...

Después de malgastar 6 horas, lo leí en alguna parte ...

La fecha y la hora del servidor se deben actualizar para que funcionen correctamente ...

de lo contrario, obtendrá ''Sys'' como un error indefinido.


Pruebe una de estas soluciones:

1. El navegador no puede cargar el script comprimido

Este suele ser el caso si obtiene el error en IE6, pero no en otros navegadores.

The Script Resource Handler - ScriptResource.axd comprime los scripts antes de devolverlos al navegador. En versiones anteriores a RTM, el controlador lo hacía todo el tiempo para todos los navegadores, y no era configurable. Existe un problema en uno de los componentes de IE6 que le impide cargar scripts comprimidos correctamente. Vea el artículo de KB here . En las compilaciones RTM, hemos hecho dos correcciones para esto. Uno, no comprimimos si IE6 es el cliente del navegador. Dos, ahora hemos hecho la compresión configurable. A continuación, le mostramos cómo puede alternar la web.config.

Como lo arreglas? Primero, asegúrese de estar utilizando la versión AJAX Extensions 1.0 RTM. Eso solo debería ser suficiente. También puede intentar desactivar la compresión editando su web.config para tener lo siguiente:

<system.web.extensions> <scripting> <scriptResourceHandler enableCompression="false" enableCaching="true" /> </scripting> </system.web.extensions>

2. La configuración requerida para ScriptResourceHandler no existe para web.config para su aplicación

Asegúrese de que su web.config contiene las entradas del archivo predeterminado web.config proporcionado con la instalación de extensiones. (ubicación predeterminada: C: / Archivos de programa / Microsoft ASP.NET / ASP.NET 2.0 Extensiones AJAX / v1.0.61025)

3. El directorio virtual que está utilizando para su sitio web no está marcado correctamente como una aplicación (por lo tanto, la configuración no se está cargando): esto ocurriría en los sitios web de IIS.

Asegúrese de estar utilizando una aplicación web y no solo un directorio virtual

4. Las solicitudes ScriptResource.axd devuelven 404

Esto generalmente apunta a una configuración incorrecta de ASP.NET como un todo. En una instalación predeterminada de ASP.NET, cualquier solicitud web a un recurso que termina en .axd se pasa de IIS a ASP.NET a través de una asignación de isapi. Además, la asignación está configurada para no verificar si el archivo existe. Si esa asignación no existe, o si el archivo de comprobación existe no está deshabilitado, entonces IIS intentará encontrar el archivo físico ScriptResource.axd, no lo encontrará y devolverá 404.

Puede verificar si este es el problema al copiar y pegar la URL completa a ScriptResource.axd desde aquí y ver qué devuelve.

<script src="/MyWebApp/ScriptResource.axd?[snip - long query string]" type="text/javascript"></script>

¿Cómo arreglas esto? Si ASP.NET no está instalado correctamente, puede ejecutar la herramienta de línea de comandos "aspnet_regiis.exe" para repararlo. Se encuentra en C: / WINDOWS / Microsoft.Net / Framework / v2.0.50727. Puede ejecutar "aspnet_regiis -i -enable", que hace el registro completo de ASP.NET con IIS y se asegura de que el ISAPI esté habilitado en IIS6. También puede ejecutar "aspnet_regiis -s w3svc / 1 / root / MyWebApp" para solucionar solo el registro de su aplicación web.

5. Resolver el error "Sys no está definido" en ASP.NET AJAX RTM bajo IIS 7

Coloque esta entrada en <system.webServer/><handlers/> :

<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

y elimine el que está debajo de <system.web/><httpHandlers/> .

Referencias: http://weblogs.asp.net/chrisri/demystifying-sys-is-undefined http://geekswithblogs.net/lorint/archive/2007/03/28/110161.aspx


Resolví este problema al crear una solución asp.net ajax separada y copiar y pegar toda la configuración de ajax de web.config para el proyecto en funcionamiento.

aquí está la configuración obligatoria que debe establecer en web.config

<configuration> <configSections> <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/> </sectionGroup> </sectionGroup> </configSections>

<assemblies> <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </assemblies> </compilation> <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> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </httpModules> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </modules> <handlers> <remove name="WebServiceHandlerFactory-Integrated"/> <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </handlers> </system.webServer>


Resolví mi problema moviendo el bloque <script type="text/javascript"></script> que contiene las llamadas Sys. * Más abajo (al último elemento antes del cierre de la sección <asp:Content/> del cuerpo) en el HTML en la página. Originalmente tenía mi bloque de scripts en la sección HEAD <asp:Content/> de mi página. Estaba trabajando dentro de una página que tenía un MasterPageFile. Espero que esto ayude a alguien.


Simplemente crea archivos .axd en blanco en tu solución. Se resolverá el problema del root foder. (Archivo 2: scriptresouce.asx, webresource.asxd)


Tuve el mismo problema después de actualizar mi AjaxControlToolkit.dll a la última versión 4.1.7.725 de 4.1.60623.0. He buscado y aparecido en esta página, pero ninguna de las respuestas me ayuda. Después de consultar el sitio web de muestra del Ajax Control Toolkit que está en el archivo zip CodePlex, me he dado cuenta de que el <asp:ScriptManager> reemplazado por el nuevo <ajaxtoolkit:ToolkitScriptManager> . Lo hice y no hay ningún sistema. El extenso no está definido más.



Tuve problemas similares y, para mi sorpresa, descubrí que uno de mis desarrolladores había guardado web.config en la misma carpeta / solución que web123.config y, por error, ambos archivos se cargaron.

Tan pronto como eliminé el archivo web123.config , este error desapareció y ajax framework se cargaba correctamente. a pesar de que tengo

<compilation debug="true">

En mi caso, también tengo el siguiente segmento. Mi proyecto está usando framework 3.5

<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> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </httpModules> </system.web>


Entorno de desarrollo:
  • Dev-Env: VS 2012
  • FX: 4.0 / 4.5
  • Implementaciones: Maestro (ScriptManager + UpdatePanel / Timer) + Contenido (UpdatePanel)
  • Patrones: PageRouting.

Renuncia:

Si todas las soluciones web.config no funcionan para usted y ha implementado PageRouting (IIS 7+), el siguiente fragmento de código resolverá sus problemas.

Fondo:

No quiere decir Highjack esta pregunta, pero tuvo el mismo problema que todos los demás y se implementó el 100% de las sugerencias aquí, con modificaciones menores para .Net 4.0 / 4.5, y ninguno de ellos funcionó para mí.

En mi situación, había implementado el enrutamiento de páginas, que estaba borrando mi problema. Básicamente funcionaría para aproximadamente 20, o así, las corridas de depuración y luego el error de BAM con el Sys is undefined error Sys is undefined .

Después de revisar un par de otras publicaciones, que llegaron a hablar sobre la lógica de Clean-URL, recordé que había hecho las configuraciones de PageRouting.

Aquí está el recurso que utilicé para construir mis patrones: Enrutamiento de páginas

Mi código de una sola línea solucionó mi problema de depuración VS2012:

rts.Ignore("{resource}.axd/{*pathInfo}") ''Ignores any Resource cache references, used heavily in AJAX interactions.