Sys est indéfini

J'ai un projet de kit de contrôle ASP.Net/AJAX sur lequel je travaille. 80% du temps, il n'y a pas de problème. La page s'exécute comme il se doit. Si vous actualisez la page, cela affichera parfois une erreur javascript. "Sys is indefined".

Cela ne se produit pas tout le temps, mais il est reproductible. Lorsque cela se produit, l'utilisateur doit fermer son navigateur et rouvrir la page.

Cela m'amène à croire que ce pourrait être un paramètre IIS.

Une autre note. J'ai regardé la source de la page à la fois lorsque j'avais l'erreur et quand pas. Lorsque la page lance des erreurs, le code suivant est manquant:

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

J'ai réparé mon problème en déplaçant le bloc <script type="text/javascript"></script> contenant les appels Sys. * Plus bas (vers le dernier élément avant la fin de la section <asp:Content/> du corps) dans Le HTML sur la page. J'ai initialement eu le bloc de script dans la section HEAD <asp:Content/> de ma page. Je travaillais dans une page contenant un fichier MasterPage. J'espère que ça aide quelqu'un.

Quand j'ai eu les erreurs

  • Sys est indéfini
  • L'architecture ASP.NET Ajax côté client n'a pas pu charger

Dans IE lors de l'utilisation des contrôles ASP.NET Ajax dans .NET 2.0, j'ai dû ajouter ce qui suit au fichier web.config dans les balises <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> 

Essayez de configurer votre ScriptManager à ceci.

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

Vous devez ajouter ces lignes sur le 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> 

J'espère que cela t'aides.

La réponse de Dean L', https://stackoverflow.com/a/1718513/292060 a fonctionné pour moi, puisque mon appel à Sys était aussi trop tôt. Puisque j'utilise jQuery, au lieu de la déplacer, je place le script dans un document. Je l'ai déjà appelé:

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

Cela semble être assez tard pour que Sys soit disponible.

J'utilisais telerik et j'avais exactement le même problème.

En ajoutant ceci à web.config a résolu mon problème 🙂

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

Peut-être que cela vous aidera aussi. C'était un problème d'authentification.

La source

En plus de vous assurer que vous avez ScriptManager sur votre page, vous devez vous assurer que votre web.config est correctement configuré.

Lorsque ASP.NET AJAX 1.0 a été publié (pour .NET 2.0), il y avait beaucoup de paramètres personnalisés de web.config qui ont ajouté des gestionnaires, des contrôles, etc.

Vous trouverez ici les informations de configuration: http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

Essayez une de ces solutions:

1. Le navigateur ne parvient pas à charger le script compressé

C'est habituellement le cas si vous obtenez l'erreur sur IE6, mais pas sur d'autres navigateurs.

The Script Resource Handler – ScriptResource.axd comprime les scripts avant de les renvoyer sur le navigateur. Dans les versions pré-RTM, le gestionnaire l'a fait tout le temps pour tous les navigateurs, et ce n'était pas configurable. Il existe un problème dans l'un des composants d'IE6 qui l'empêche de charger correctement les scripts compressés. Voir l'article KB ici . Dans les compilations RTM, nous avons fait deux correctifs pour cela. L'un, nous ne comprions pas si IE6 est le client du navigateur. Deux, nous avons maintenant configuré la compression. Voici comment vous pouvez basculer le web.config.

Comment réparez-vous cela? Tout d'abord, assurez-vous d'utiliser la version AJAX Extensions 1.0 RTM. Ce seul devrait suffire. Vous pouvez également essayer de désactiver la compression en modifiant votre web.config pour avoir ce qui suit:

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

2. La configuration requise pour ScriptResourceHandler n'existe pas pour le web.config pour votre application

Assurez-vous que votre web.config contient les entrées du fichier web.config par défaut fourni avec l'installation des extensions. (Emplacement par défaut: C: \ Program Files \ Microsoft ASP.NET \ ASP.NET 2.0 AJAX Extensions \ v1.0.61025)

3. Le répertoire virtuel que vous utilisez pour votre site Web n'est pas correctement marqué comme une application (la configuration n'est donc pas chargée) – Cela se produirait pour les sites Web IIS.

Assurez-vous que vous utilisez une application Web, et pas seulement un répertoire virtuel

4. Les requêtes ScriptResource.axd renvoient 404

Cela indique généralement une mauvaise configuration d'ASP.NET dans son ensemble. Lors d'une installation par défaut d'ASP.NET, toute requête Web d'une ressource terminée par .axd est transmise d'IIS à ASP.NET via un mappage isapi. En outre, le mappage est configuré pour ne pas vérifier si le fichier existe. Si ce mappage n'existe pas ou si le fichier existant n'est pas désactivé, IIS tentera de trouver le fichier physique ScriptResource.axd, ne le trouvera pas et renverra 404.

Vous pouvez vérifier pour voir si c'est le problème en coipy / collage de l'URL complète à ScriptResource.axd à partir d'ici, et voir ce qu'il renvoie

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

Comment réparez-vous ceci? Si ASP.NET n'est pas correctement installé, vous pouvez exécuter l'outil de ligne de commande "aspnet_regiis.exe" pour le réparer. Il est situé dans C: \ WINDOWS \ Microsoft.Net \ Framework \ v2.0.50727. Vous pouvez exécuter "aspnet_regiis -i -enable", qui fait l'enregistrement complet d'ASP.NET avec IIS et s'assure que ISAPI est activé dans IIS6. Vous pouvez également exécuter "aspnet_regiis -s w3svc / 1 / root / MyWebApp" pour ne pas corriger l'enregistrement pour votre application Web.

5. Résolution de l'erreur "Sys is indefined" dans ASP.NET AJAX RTM sous IIS 7

Mettez cette entrée sous <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" /> 

Et supprimez celui sous <system.web/><httpHandlers/> .

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

Assurez-vous que tous les scripts clients que vous avez qui interagissent avec .NET AJAX ont la ligne suivante à la fin:

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

Cela indique au gestionnaire de script que le fichier de script complet a été chargé et qu'il peut commencer à appeler des méthodes client

J'avais ce même problème et, après de nombreuses querelles, j'ai décidé d'essayer d'isoler le problème et de charger simplement le gestionnaire de script dans une page vide qui a encore entraîné cette même erreur. Ayant isolé le problème que j'ai découvert à travers une comparaison de la web.config de mon site avec un tout nouveau site de test qui modifie <compilation debug="true"> vers <compilation debug="false"> dans la section system.web de Mon web.config corrige le problème.

J'ai également dû supprimer le <xhtmlConformance mode="Legacy"/> entrée de system.web pour que le panneau de mise à jour fonctionne correctement. Cliquez ici pour une description de ce problème.

J'ai résolu ce problème en créant une solution séparée asp.net ajax et copier et coller toute la configuration ajax de web.config au projet de travail.

Voici la configuration nécessaire que vous devez définir dans 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> 

Dans le cas où aucun des éléments ci-dessus ne fonctionnerait pour vous, et que vous remplacerez OnPreRenderComplete, assurez-vous d'appeler base.OnPreRenderComplete. Mon thérapeute va me contenter de me retrouver

J'ai eu le même problème après avoir mis à jour mon AjaxControlToolkit.dll vers la dernière version 4.1.7.725 depuis 4.1.60623.0. J'ai cherché et je suis arrivé à cette page, mais aucune des réponses m'aide. Après avoir regardé le site Web de l'Ajax Control Toolkit qui se trouve dans le fichier zip CodePlex, j'ai réalisé que <asp:ScriptManager> remplacé par le nouveau <ajaxtoolkit:ToolkitScriptManager> . Je l'ai fait et il n'y a plus Sys.Extended est indéfini .

Dans mon cas, le problème était que j'avais mis le code suivant pour garder la table de table gridview après le décompte partiel:

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

La suppression de ce code a arrêté le problème.

J'avais un problème similaire, sauf que ma page générait systématiquement l'erreur Sys est indéfinie.

Pour moi, le problème résulte du fait que je viens d'installer l'extension AJAX 1.0 pour .NET 2.0 mais j'ai déjà créé mon projet Web dans Visual Studio.

Lorsque j'ai essayé de créer des contrôles AJAX, j'ai continué à rencontrer cette erreur, j'ai repéré les messages Slace et MadMax1138s ici. Et je pensais que c'était mon web.config, j'ai créé un nouveau projet en utilisant le nouveau type de projet «AJAX enabled web site», et bien sûr, le web.config dispose d'un grand nombre de personnalisations nécessaires pour utiliser les contrôles AJAX.

Je viens de mettre à jour ce web.config avec les mises à jour web.config que j'avais déjà faites et je l'ai laissé tomber dans mon projet existant et tout s'est bien passé.

Veuillez s'il vous plaît vérifiez que le serveur a la date et l'heure …

Après avoir perdu 6 heures, je l'ai lu quelque part …

La date et l'heure du serveur doivent être mises à jour pour fonctionner correctement …

Sinon vous obtiendrez 'Sys' est une erreur indéfinie.

J'ai vu exactement la même erreur aujourd'hui, mais ce n'était pas un problème de configuration ou de JavaScript direct.

Un projet .net externe a été mis à jour, mais les modifications n'ont pas été enregistrées correctement dans la compilation du site Web. Ma présomption est que ASP.NET ajax n'a pas été en mesure de construire correctement les représentations client des objets .NET et n'a donc pas correctement fonctionné.

Pour résoudre, j'ai reconstruit le (s) projet (s) externe (s) et j'ai reconstruit ma solution qui connaissait des problèmes. Le problème s'est éloigné.

J'ai trouvé l'erreur lors de l'utilisation d'une combinaison de Ajax Control Toolkit ToolkitScriptManager et d'URL Write 2.0.

Dans mon <rewrite> <outboundRules> j'ai eu une condition préalable:

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

Mais apparemment, certaines de mes règles de sortie n'étaient pas destinées à utiliser la condition préalable.

Une fois que j'ai eu cette condition préétablie sur toutes mes règles de sortie:

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

Plus de problème.

Assurez-vous que vous n'avez aucune règle de réécriture qui modifie votre url.

Dans mon cas, l'application pensait que c'était un niveau plus profond que l'URL atteint.

Exemple: http://mysite.com/app/page.aspx était la véritable URL. Mais j'ai coupé / app / cela a bien fonctionné pour ASP.net et WCF, mais clairement pas pour Ajax.

J'ai eu des problèmes similaires et pour ma surprise ce que j'ai trouvé qu'un de mes développeurs avait sauvegardé web.config dans le même dossier / solution que web123.config et par erreur ces deux fichiers ont été téléchargés.

Dès que j'ai supprimé le fichier web123.config , cette erreur a disparu et le framework ajax a été correctement chargé. Même si j'ai

 <compilation debug="true"> 

Dans mon cas, j'ai aussi un segment suivant. Mon projet utilise le cadre 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> 

Cela va paraître stupide, mais j'ai eu un problème similaire avec un site développé dans VS2010 et hébergé dans VS Dev Server. La page en question possédait un scriptmanager pour créer la connexion à un service wcf. J'ai ajouté une méthode supplémentaire au service et cette erreur a commencé à apparaître.

Ce qui m'a été réglé, est passé de «Auto-assign Port» à «Port spécifique» avec un numéro de port différent dans les paramètres Web Orject.

J'aimerais savoir pourquoi …

Environnement de développement:

  • Dev-Env: VS 2012
  • FX: 4.0 / 4.5
  • Implémentations: Master (ScriptManager + UpdatePanel / Timer) + Contenu (UpdatePanel)
  • Modèles: PageRouting.

Avertissement:

Si toutes les solutions web.config ne fonctionnent pas pour vous et que vous avez implémenté PageRouting (IIS 7+), l'extrait de code ci-dessous résoudra vos problèmes.

Contexte:

Ne comptez pas sur Highjack cette question, mais a eu le même problème que tout le monde et a implémenté 100% des suggestions ici, avec des modifications mineures pour .Net 4.0 / 4.5, et aucune d'entre elles ne fonctionnaient pour moi.

Dans ma situation, j'avais mis en place le routage de la page, ce qui faisait naître mon problème. Fondamentalement, cela fonctionnerait pour environ 20, ou plus, les courses de débogage et BAM serait alors une erreur avec l'erreur Sys is undefined .

Après avoir passé en revue quelques autres articles, il fallait parler de la logique Clean-URL, je me suis souvenu que j'avais fait des configurations de PageRouting.

Voici la ressource que j'ai utilisée pour créer mes modèles: Routage de page

Mon code one-liner a corrigé mon problème de débogage VS2012:

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

Même après avoir ajouté l'entrée correcte pour la configuration Web, vous obtenez toujours cette erreur? La raison la plus courante pour cette erreur est le JavaScript qui fait référence à l'espace de noms Sys trop tôt. Ensuite, la correction la plus évidente serait de déplacer le bloc de script java sous le contrôle ScriptManager:

Je ne pense pas que ce point a été ajouté et que je viens de passer quelque temps à chasser cela, j'espère qu'il peut aider.

Je travaille avec IIS 7 et j'utilise le framework ASP.NET v4.
Dans mon cas, il était important qu'une entrée soit ajoutée à la section et à la section de l'entrée dans le fichier web.config.

Mon fichier web.config a beaucoup de gestionnaires et, dans mon cas, il était plus facile d'ajouter l'entrée ScriptResources à la partie supérieure de la section des gestionnaires. Plus important encore, il doit être placé avant toute entrée qui servira de caractère générique et capture la demande. En l'ajoutant après une entrée de caractère générique, il sera ignoré et l'erreur apparaîtra toujours.

Le module peut être ajouté en haut ou en bas de la section.

Exemple 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> 

J'ai eu le même problème, mais je l'ai corrigé par:

Lorsque vous mettez un fichier de script dans une page, assurez-vous qu'il est

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

J'ai suivi ceci: http://forums.asp.net/t/1742435.aspx?Un+élément+ avec+id+form1+pould+not+be+found+Script+error+on+page+load

J'espère que cela aidera

Ajouter

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

Veuillez entrer la description du lien entre ici

Dans mon cas, j'ai trouvé une raison très cachée … Il y avait cette route de page avec Global.ascx.cs qui n'apparaît pas dans mes tests dans les sous-dossiers, mais renvoie l'erreur de questions tout le temps .. un autre Journée avec des problèmes étranges.

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

Bonjour, beaucoup de choses ont résolu mon problème,

Par défaut vs 2008, ajoutera

  <!--<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" />--> 

Besoin de corriger la configuration par défaut (ci-dessus) au code ci-dessous 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"/> 

Il suffit de créer des fichiers .axd vierges dans votre solution. Le problème de la source sera résolu. (2 fichier: scriptresouce.asx, webresource.asxd)