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 fonctionne comme il se doit. Si vous actualisez la page, il affichera parfois une erreur javascript "Sys n'est pas défini".
Cela n'arrive pas tout le temps, mais c'est reproductible. Lorsque cela se produit, l'utilisateur doit fermer son navigateur et rouvrir la page.
Cela m'amène à croire qu'il pourrait s'agir d'un paramètre IIS.
Une autre note. J'ai regardé la source de la page à la fois lorsque j'obtiens l'erreur et quand ce n'est pas le cas. Lorsque la page génère des erreurs, le code suivant est manquant:
<script src="/ScriptResource.axd?d=EAvfjPfYejDh0Z2Zq5zTR_TXqL0DgVcj_h1wz8cst6uXazNiprV1LnAGq3uL8N2vRbpXu46VsAMFGSgpfovx9_cO8tpy2so6Qm_0HXVGg_Y1&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ésolu mon problème en déplaçant le <script type="text/javascript"></script>
bloc contenant les appels Sys. * plus bas (jusqu'au dernier élément avant la fermeture de <asp:Content/>
section) dans le code HTML de la page. J'avais à l'origine mon bloc de script dans le HEAD <asp:Content/>
section de ma page. Je travaillais à l'intérieur d'une page qui avait un MasterPageFile. J'espère que cela aide quelqu'un.
Quand j'ai rencontré les erreurs
dans IE lors de l'utilisation des contrôles Ajax ASP.NET dans .NET 2.0, je devais ajouter ce qui suit au fichier web.config dans le <system.web>
Mots clés:
<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>
J'utilisais telerik et j'avais exactement le même problème.
l'ajouter à 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.
Essayez l'une de ces solutions:
1. Le navigateur ne parvient pas à charger le script compressé
C'est généralement le cas si vous obtenez l'erreur sur IE6, mais pas sur les autres navigateurs.
Le gestionnaire de ressources de script - ScriptResource.axd compresse les scripts avant de les renvoyer au navigateur. Dans les versions antérieures à RTM, le gestionnaire le faisait tout le temps pour tous les navigateurs, et ce n'était pas configurable. Un problème dans l'un des composants d'IE6 l'empêche de charger correctement les scripts compressés. Voir l'article de la base de connaissances ici . Dans les versions RTM, nous avons apporté deux correctifs à ce problème. L'un, nous ne compressons pas si IE6 est le client du navigateur. Deux, nous avons maintenant rendu la compression configurable. Voici comment vous pouvez basculez le web.config.
Comment le corrigez-vous? Tout d'abord, assurez-vous que vous utilisez les extensions AJAX Extensions 1.0 RTM. Cela seul devrait suffire. Vous pouvez également essayer de désactiver la compression en modifiant votre site Web). config pour avoir les éléments suivants:
<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 de 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é en tant qu'application (donc la configuration n'est pas chargée) - Cela se produirait pour les sites 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. Sur une installation par défaut d'ASP.NET, toute demande Web à une ressource se terminant par .axd est passée de IIS à ASP.NET via un mappage isapi. De plus, le mappage est configuré pour ne pas vérifier si le fichier existe. Si ce mappage n'existe pas, ou si la vérification de l'existence du fichier n'est pas désactivée, IIS tentera de trouver le fichier physique ScriptResource.axd, ne le trouvera pas, et retournez 404.
Vous pouvez vérifier si c'est le problème en copiant/collant l'URL complète à ScriptResource.axd à partir d'ici, et en voyant 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é du tout, vous pouvez exécuter l'outil de ligne de commande "aspnet_regiis.exe" pour le corriger. Il se trouve dans C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727. Vous pouvez exécuter "aspnet_regiis -i -enable", qui effectue l'enregistrement complet d'ASP.NET avec IIS et s'assure que l'ISAPI est activé dans IIS6. Vous pouvez également exécuter "aspnet_regiis -s w3svc/1/root/MyWebApp "pour corriger uniquement l'enregistrement de votre application Web.
5. Résolution de l'erreur "Sys is undefined" dans ASP.NET AJAX RTM under 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-undefinedhttp://geekswithblogs.net/lorint/archive/2007/03/28/ 110161.aspx
Vous devez ajouter ces lignes dans 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.
En plus de vous assurer que ScriptManager est 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 web.config personnalisés qui ajoutaient des gestionnaires, des contrôles, etc.
Vous trouverez les informations de configuration ici: http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.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 entier a été chargé et qu'il peut commencer à appeler des méthodes client
Je déteste ajouter à un sujet aussi énorme et bien plus tard, mais je pense que j'ai au moins une solution qui fonctionne dans VS2015.
J'étais à la recherche d'une raison pour l'erreur sys, et la seule solution qui a fonctionné pour moi était d'ajouter EnableCdn="true"
dans un ScriptManager
comme ceci:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true" />
Voir le MSDN pour plus d'informations.
Pourquoi devons-nous faire cela?
Lorsque vous travaillez sur une application Web asp.net, vous devez activer CDN pour que Microsoft puisse télécharger le Sys.
bibliothèque.
Il y avait probablement un script dans votre page qui utilisait la fonction Sys
. Réglage EnableCdn="true"
garantirait que la bibliothèque Sys
est téléchargée avant d'être utilisée.
Qu'est-ce que CDN?
Un devis de https://www.sitepoint.com/7-reasons-to-use-a-cdn/
La plupart des CDN sont utilisés pour héberger des ressources statiques telles que des images, des vidéos, des clips audio, des fichiers CSS et JavaScript. Vous trouverez des bibliothèques JavaScript communes, des cales HTML5, des réinitialisations CSS, des polices et d'autres ressources disponibles sur une variété de systèmes CDN publics et privés.
Google et Microsoft ont tous deux des CDN. Il vous suffit d'ajouter une référence. Habituellement, les CDN sont ajoutés via une ressource de script:
<script src="https://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjax.js" type="text/javascript"></script>
Une fois que vous avez défini EnableCdn="true"
et Microsoft ajoutera sa petite référence CDN (comme celle ci-dessus) dans la page qui télécharge la bibliothèque Sys
.
J'espère que cela aide quiconque a rencontré le même problème.
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 simplement charger le gestionnaire de scripts dans une page vide, ce qui a toujours entraîné cette même erreur. Après avoir isolé le problème, j'ai découvert une comparaison du web.config de mon site avec un tout nouveau site de test (en fonctionnement) qui changeait <compilation debug="true">
à <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.
Dans mon cas, le problème était que j'avais inséré le code suivant pour conserver l'en-tête de table gridview après une publication partielle:
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'ai résolu ce problème en créant une solution ajax asp.net séparée et en copiant et collant toute la configuration ajax de web.config vers le projet de travail.
voici la configuration incontournable 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>
J'ai eu le même problème après la mise à jour de mon AjaxControlToolkit.dll vers la dernière version 4.1.7.725 de 4.1.60623.0. J'ai cherché et suis arrivé sur cette page, mais aucune des réponses ne m'aide. Après avoir consulté l'exemple de site Web de l'Ajax Control Toolkit qui se trouve dans le fichier Zip CodePlex, j'ai réalisé que le <asp:ScriptManager>
remplacé par le nouveau <ajaxtoolkit:ToolkitScriptManager>
. Je l'ai fait et il n'y a plus Sys.Extended n'est pas défini plus.
Dans le cas où aucun des éléments ci-dessus ne fonctionne pour vous, et que vous êtes en train de remplacer OnPreRenderComplete, assurez-vous d'appeler base.OnPreRenderComplete. Mon thérapeute va être content de me revoir
Dans mon cas, j'ai trouvé une raison très cachée ... Il y avait cet itinéraire de page avec in Global.ascx.cs qui n'apparaît pas dans mes tests dans les sous-dossiers mais renvoie la question erreur tout le temps .. un autre jour avec des problèmes étranges.
routes.MapPageRoute("siteDefault", "{culture}/", "~/default.aspx", false, new RouteValueDictionary(new { culture = "(\\w{2})|(\\w{2}-\\w{2})" }));
Même après avoir ajouté l'entrée correcte pour la configuration Web, vous obtenez toujours cette erreur? la raison la plus courante de cette erreur est JavaScript qui fait référence à l'espace de noms Sys trop tôt. Le correctif le plus évident serait alors de déplacer le bloc de script Java sous le contrôle ScriptManager:
Assurez-vous que vous n'avez pas de règles de réécriture qui modifient votre URL.
Dans mon cas, l'application pensait que le niveau était plus bas 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.
Ajouter
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
Veuillez vérifier entrez la description du lien ici
Si tous les web.config
les solutions ne fonctionnent pas pour vous et vous avez implémenté PageRouting (IIS 7+), l'extrait de code ci-dessous résoudra vos problèmes.
Ne signifie pas à Highjack cette question mais a eu le même problème que tout le monde et a mis en œuvre 100% des suggestions ici, avec des modifications mineures pour .Net 4.0/4.5, et aucune d'entre elles n'a fonctionné pour moi.
Dans ma situation, j'avais implémenté Page Routing qui fantôme mon problème. Fondamentalement, cela fonctionnerait pendant environ 20, ou ainsi, les exécutions de débogage, puis BAM générerait une erreur avec le Sys is undefined
Erreur.
Après avoir examiné quelques autres articles, qui parlaient de la logique Clean-URL, je me suis souvenu que j'avais fait la configuration de PageRouting.
Voici la ressource que j'ai utilisée pour construire mes modèles: Page Routing
Mon code à une ligne a résolu mon problème de débogage VS2012:
rts.Ignore("{resource}.axd/{*pathInfo}") 'Ignores any Resource cache references, used heavily in AJAX interactions.
Cela va sembler stupide, mais j'ai eu un problème similaire avec un site en cours de développement dans VS2010 et hébergé sur le serveur VS Dev. La page en question avait un gestionnaire de scripts 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 a résolu le problème était de passer de "Port d'attribution automatique" à "Port spécifique" avec un numéro de port différent dans les paramètres Web oroject.
J'aimerais savoir pourquoi ...
Avait un problème similaire, sauf que ma page générait constamment le Sys est une erreur non définie.
Pour moi, le problème vient du fait que je viens d'installer l'extension AJAX 1.0 pour .NET 2.0 mais que j'avais déjà créé mon projet Web dans Visual Studio.
Quand j'ai essayé de créer AJAX contrôles j'ai continué à rencontrer cette erreur, j'ai repéré les publications de Slace et MadMax1138s ici. Et pensant que c'était mon web.config, j'ai créé un nouveau projet en utilisant le nouveau "Web compatible AJAX site "type de projet, et bien sûr le web.config a 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 moi-même et de le déposer dans mon projet existant et tout a bien fonctionné.
J'ai eu le même problème mais je l'ai résolu 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?An+element+with+id+form1+could+not+be+found+Script+error+on+page + charge
J'espère que cela vous aidera
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é correctement reprises dans la compilation du site Web. Je présume qu'ASP.NET ajax n'a pas été en mesure de construire correctement les représentations client des objets .NET et n'a donc pas pu se charger correctement.
Pour résoudre ce problème, j'ai reconstruit le (s) projet (s) externe (s) et reconstruit ma solution qui rencontrait des problèmes. Le problème a disparu.
J'ai eu des problèmes similaires et à ma grande surprise ce que j'ai trouvé qu'un de mes développeurs avait enregistré 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 cadre ajax se chargeait correctement. même si j'ai
<compilation debug="true">
Dans mon cas, j'ai également le segment suivant. Mon projet utilise le 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>
Je ne pense pas que ce point ait été ajouté et depuis que je viens de passer un peu de temps à le rechercher, j'espère que cela peut aider.
Je travaille avec IIS 7 et j'utilise ASP.NET v4 Framework.
Dans mon cas, c'était important qu'une entrée soit ajoutée à la fois à la section et à l'entrée du 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 en haut de la section des gestionnaires. Plus important encore, il doit être placé avant toute entrée qui agira comme un caractère générique et capturera la demande. L'ajouter après une entrée générique le fera ignorer 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 trouvé l'erreur lors de l'utilisation d'une combinaison de Ajax Control Toolkit ToolkitScriptManager et URL Write 2.0.
Dans mon <rewrite> <outboundRules>
J'avais 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 sortantes n'étaient pas définies pour utiliser la condition préalable.
Une fois que j'avais cette condition préalable définie sur toutes mes règles sortantes:
<rule preCondition="IsHTML" name="MyOutboundRule">
Plus de problème.
Veuillez vérifier s'il vous plaît que le serveur a l'heure et la date correctes ...
Après avoir perdu environ 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 non définie.