it-swarm-es.tech

Sys no está definido

Tengo un proyecto de kit de control ASP.Net/AJAX en el que estoy trabajando. El 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 "El sistema no está definido".

No sucede todo el tiempo, pero es reproducible. Cuando esto 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 IIS.

Otra nota. Miré la fuente de la página cuando recibí el error y 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>
60
James

Solucioné 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 de la página. Originalmente tuve mi bloque de secuencias de comandos 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.

53
Dean L

Cuando experimenté los errores.

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

en IE al usar los controles Ajax de ASP.NET 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>
12
Ray Vega

La respuesta de Dean L, https://stackoverflow.com/a/1718513/292060 trabajó para mí, ya que mi llamada a Sys también fue demasiado pronto. Ya que estoy usando jQuery, en lugar de moverlo hacia abajo, coloco el script dentro de un documento.

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

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

8
goodeye

Intenta configurar tu ScriptManager para esto.

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

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

agregar esto a web.config resolvió mi problema :)

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

tal vez te ayude tambien Fue un problema de autenticación.

Fuente

6
Zviadi

Prueba 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.

El controlador de recursos de script: 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. Hay un problema en uno de los componentes de IE6 que le impide cargar correctamente los scripts comprimidos. Ver artículo de KB aquí . En RTM compilaciones, hemos hecho dos correcciones para esto. Uno, no comprimimos si IE6 es el cliente del navegador. Dos, ahora hemos hecho la compresión configurable. Aquí es cómo puede cambiar el web.config.

Como lo arreglas? Primero, asegúrese de que está usando la versión AJAX Extensiones 1.0 RTM. Eso solo debería ser suficiente. También puedes intentar desactivar la compresión editando tu 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 contenga las entradas del archivo web.config predeterminado provisto con la instalación de extensiones. (ubicación predeterminada: C:\Archivos de programa\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensiones\v1.0.61025)

3. El directorio virtual que está utilizando para su web, no está marcado correctamente como una aplicación (por lo tanto, la configuración no se está cargando) - Esto sucedería para IIS webs.

Asegúrese de que está 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 pasa de IIS a ASP.NET a través de un mapeo de isapi. Además, la asignación se configura para no verificar si el archivo existe. Si esa asignación no existe, o la verificación si el archivo existe no está deshabilitada, IIS intentará encontrar el archivo físico ScriptResource.axd, no lo encontrará y devolverá 404.

Puede verificar si este es el problema coipy/pegando la url completa en 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 solucionarlo. Se encuentra en C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727. Puede ejecutar "aspnet_regiis -i -enable", que realiza el registro completo de ASP.NET con IIS y se asegura de que la ISAPI esté habilitada en IIS6. También puede ejecutar "aspnet_regiis -s w3svc/1/root/MyWebApp" para corregir solo el registro de su aplicación web.

5. Resolviendo el error "El sistema no está definido" en ASP.NET AJAX RTM bajo IIS 7

Ponga esta entrada bajo <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 quite el que está debajo de <system.web/><httpHandlers/>.

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

5
Alex N.

Debes agregar estas lineas 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.

5
Alcides Martínez

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

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

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

4
Aaron Powell

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

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

Esto le indica al administrador de secuencias de comandos que todo el archivo de secuencia de comandos se ha cargado y que puede comenzar a llamar a los métodos del cliente

3
Tom Carter

Odio agregar a un tema tan enorme y mucho más tarde, pero creo que, como mínimo, tengo una solución que funciona en VS2015.

Estaba en una búsqueda para encontrar una razón para el error del sistema, y ​​la única solución que funcionó para mí fue agregar EnableCdn="true" en una ScriptManager como esta:

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

Vea el MSDN para más información.

¿Por qué necesitamos hacer esto?

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

Probablemente había un script en su página que estaba usando la función Sys. La configuración de EnableCdn="true" aseguraría que la biblioteca Sys se descargue antes de usarla.

¿Qué es CDN?

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

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

Tanto Google como Microsoft tienen CDNs. Todo lo que tienes que hacer es agregar una referencia. Por lo general, los 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" y Microsoft agregará su pequeña referencia de CDN (como la de arriba) en la página que descarga la biblioteca Sys.

Espero que eso ayude a cualquiera que se haya encontrado con el mismo problema.

2
Hawkeye

Estaba teniendo el mismo problema y, después de muchas discusiones, decidí intentar aislar el problema y simplemente cargar el administrador de scripts en una página vacía que aún daba como resultado este mismo error. Tras aislar el problema que descubrí mediante una comparación de web.config de mi sitio con un sitio de prueba nuevo (en funcionamiento), cambiar <compilation debug="true"> a <compilation debug="false"> en la sección system.web de mi 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 funcionara correctamente. Haga clic aquí para obtener una descripción de este problema.

2
MadMax1138

En mi caso, el problema era que había puesto el siguiente código para mantener el encabezado de tabla gridview después de la devolución 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.

1

Resolví este problema creando una solución ajax asp.net separada y copié y pegué toda la configuración ajax desde web.config al proyecto de trabajo.

aquí está la configuración 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>
1
Zara_me

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 he llegado a esta página, pero ninguna de las respuestas me ha ayudado. Después de consultar el sitio web de muestra del kit de herramientas de control Ajax que se encuentra en el archivo CodePlex Zip, me he dado cuenta de que el <asp:ScriptManager> reemplazado por el nuevo <ajaxtoolkit:ToolkitScriptManager>. Lo hice y no hay Sys.Extended no está definido más.

1
Farschidus

En caso de que ninguno de los anteriores funcione para usted, y usted esté anulando OnPreRenderComplete, asegúrese de llamar a base.OnPreRenderComplete. Mi terapeuta estará feliz de verme de vuelta.

1
David Glass

En mi caso, he encontrado una razón muy oculta ... Hubo esta ruta de página con Global.ascx.cs que no aparece en mis pruebas en subcarpetas, pero devuelve la pregunta de error todas las tiempo .. otro día con problemas extraños.

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

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

0
Mahesh

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

En mi caso, la aplicación pensó que era solo un nivel más profundo 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.

0
Max

Añadir

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

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

0
Jawad Siddiqui
  • Dev-Env: VS 2012
  • FX: 4.0/4.5
  • Implementaciones: Master (ScriptManager + UpdatePanel/Timer) + Contenido (UpdatePanel)
  • Patrones: PageRouting.

Renuncia:

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

Fondo:

No signifique que Highjack haga esta pregunta, pero tuvo el mismo problema que todos los demás e implementé el 100% de las sugerencias aquí, con pequeñas modificaciones para .Net 4.0/4.5, y ninguna de ellas funcionó para mí.

En mi situación, había implementado Enrutamiento de páginas que estaba superando mi problema. Básicamente funcionaría durante aproximadamente 20 o más, la depuración se ejecuta y luego BAM generaría un error con el error Sys is undefined.

Después de revisar un par de otras publicaciones, que empezaron a hablar sobre la lógica de URL limpia, recordé que había realizado la configuración de PageRouting.

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

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

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

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

Lo que me lo arregló fue cambiar de 'Asignar puerto automáticamente' a 'Puerto específico' con un número de puerto diferente en la configuración web de oroject.

Ojalá supiera por qué ...

0
Carl Onager

Estaba teniendo un problema similar, excepto que mi página estaba generando constantemente el Sys es un error indefinido.

Para mí, el problema radica en el 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 AJAX controles, seguí encontrando este error, descubrí las publicaciones de Slace y MadMax1138 aquí. Y me di cuenta de que era mi web.config, creé un nuevo proyecto utilizando el nuevo tipo de proyecto "sitio web habilitado para AJAX" y, efectivamente, web.config tiene una gran cantidad de personalizaciones necesarias para usar el AJAX controles.

Acabo de actualizar ese web.config con las actualizaciones de web.config que ya había hecho yo mismo y lo coloqué en mi proyecto existente y todo funcionó bien.

0
TygerKrash

Tuve el mismo problema pero lo arreglé por:

Cuando coloque un archivo de script en una página, asegúrese de que esté

<script></script> and not <script />.

He seguido esto: http://forums.asp.net/t/1742435.aspx?An+element+with+id+form1+could+not+be+found+Script+error+on+page+load

Espero que esto ayude

0
onlyme

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

Se había actualizado un proyecto .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 pudo construir las representaciones de los clientes de los objetos .NET correctamente y, por lo tanto, no se pudo cargar correctamente.

Para resolverlo, reconstruí los proyectos externos y reconstruí mi solución que tenía problemas. El problema se fue.

0
gb2d

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 el framework ajax se estaba cargando correctamente. a pesar de que tengo

<compilation debug="true">

En mi caso también tengo segmento siguiente. 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>
0
v s

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

Estoy trabajando con IIS 7 y estoy usando el Framework ASP.NET v4.
En mi caso fue importante que se agregue una entrada tanto a la sección como a la entrada en el archivo web.config.

Mi archivo web.config tiene muchos manejadores y, en mi caso, fue más fácil agregar la entrada ScriptResources a la parte superior de la sección de manejadores. Lo más importante, debe colocarse antes de cualquier entrada que actuará como un comodín y capturará la solicitud. Agregarlo 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.

Web.config Muestra:

<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>
0
RacerNerd

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

En mi <rewrite> <outboundRules> tuve una condición previa:

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

Pero al parecer, algunas de mis reglas de salida no estaban configuradas para usar la condición previa.

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

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

No más problema.

0
JonK

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

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

La fecha y la hora del servidor deben actualizarse para que funcione correctamente ...

de lo contrario obtendrá 'Sys' es un error indefinido.

0
Arsalan