« ASP.NET framework Ajax côté client n'a pas pu charger » avec WCF - tout essayé, obtenir encore

StackOverflow https://stackoverflow.com/questions/4755737

Question

je reçois maintenant « ASP.NET framework Ajax côté client n'a pas pu charger. » erreur javascript dans mon asp.net 4 site web dès que je le lance (ouvrir la page de connexion).

Il se produisait seulement après que j'appuyez sur Ctrl-F5 (rafraîchir la page et toutes les images / feuilles de style / scripts) dans le navigateur lors du débogage.

Mon application utilise asp.net 4 (écrit à l'origine sur 1,1 ou 2), WCF, JsTree, certains contrôles Telerik et extensions MS AJAX / boîte à outils.

Dans plusieurs jours de googler, je l'ai trouvé un grand nombre de solutions données par des personnes ayant le même problème (y compris ceux ici sur les forums d'aide de SO et Telerik):

J'essayé ce qui suit, aucun a fonctionné pour moi:

  • essayé de mettre un ToolkitScriptManager sur la page au lieu d'un ScriptManager
  • Aller à « Programmes et fonctionnalités » panneau de contrôle et de faire une « réparation » sur « cadre de Microsoft 4 profil client » et « cadre de Microsoft 4 Extended »
  • Déplacement du ScriptManager au bas de la page
  • Dans Web.config, réglage compilation debug = "false"
  • Démarrage d'un nouveau projet ASP.NET 4, et ajouté updatedpanel à une page, regarda le web.config et essayé de faire mon regard web.config plus comme ça
  • Date Vérifié système le PC était correct
  • éléments de localisation utilisés dans mon web.config pour permettre un accès non authentifié à WebResource.axd, ScriptResource.axd et Telerik.Web.UI.WebResource.axd (je contrôle Telerik dans ce site)
  • Ajout routes.Ignore ( "{} ressources .axd / {*} Pathinfo"); à l'enregistrement de mon itinéraire dans global.asax

Toutes les autres solutions à ce problème?

Je peux poster web.config ou un code si nécessaire.

Mise à jour 1: Plus d'infos Je regardais ce qui se passait en utilisant l'onglet « net » de Firebug. requêtes GET pour ScriptResource.axd et webresource.axd sont tous échouent avec 404 . Est-ce que ce hangar d'autres éclaircissements sur la question?

Mise à jour 2: solution partielle J'ai utilisé l'histoire du contrôle de code source pour revenir revert web.config avant que j'ajouté un service WCF sur le site. Le web.config qui a finalement travaillé était juste avant ajouté ceci:

<system.serviceModel>
    <behaviors>
        <endpointBehaviors>
            <behavior name="FoldersAspNetAjaxBehavior">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
        <service name="Folders">
            <endpoint address="" behaviorConfiguration="FoldersAspNetAjaxBehavior" binding="webHttpBinding" contract="Folders" />
        </service>
    </services>
</system.serviceModel> 

... et retiré la ligne de routage associée de mon global.asax:

routes.Add(new System.ServiceModel.Activation.ServiceRoute("", new System.ServiceModel.Activation.WebServiceHostFactory(), typeof(Folders)));

Alors un ou les deux d'entre eux étaient le coupable. Quelqu'un peut-il suggérer comment un service WCF ou il est le routage pourrait avoir causé cette erreur MS Ajax?

Ceci est mon premier service WCF. Je comprends à peine ce que le code ci-dessus est en train de faire, mais je soupçonnais un problème de routage est au cœur du problème quelque part ...

Alternativement - quelqu'un peut-il proposer une alternative à la WCF? Je peux vivre sans elle si je peux récupérer mes données JSON livrés à JQuery une autre façon. HttpHandler peut-être, ou WebService, ou qui crache sur formulaire en ligne JSON comme response.write ou quelque chose?

Mise à jour 2: Routing On dirait que les choses de routage dans global.asax nécessaire pour le service WCF est le problème (voir ci-dessus). Commentant cette ligne semble résoudre le problème. Va essayer de changer le tracé de l'itinéraire ...

Résolu : Je l'ai résolu moi-même, voir ma réponse acceptée, mais sûrement pas aurait pu le faire si rapidement sans suggestions le long de la bonne voie par des réponses très perspicace, je vous remercie tous.

Était-ce utile?

La solution 6

Dans mon cas, ce qui en fait fixé, il changeait la façon dont j'ai appelé le service WCF.

A partir de tutoriels que je lis sur WCF, j'ai raté le fait que je ne l'ai pas besoin de routage dans le Global.asax pour appeler le service Web, et je pouvais l'appeler comme:

http: //localhost/myWebApp/WcfService.svc/MethodName param = value

(j'avais fiés sur le routage dans global.asax de me laisser appeler comme ceci: http: // localhost / myWebApp / MethodName param = value. Je me suis débarrassé du routage et utilisé comme ci-dessus à la place, et le problème a disparu)

Merci à tous pour trouver des réponses perspicaces.

Autres conseils

Installer l'extension du navigateur qui peut enregistrer les requêtes au serveur. Par exemple, Firebug pour Firefox. Ensuite, vous devez vérifier tous les navigateurs de requêtes sur votre serveur et voir s'il y a des erreurs ou des réponses trop courtes.

pas sûr de l'erreur ajax (s), mais vous avez vraiment besoin Do not d'avoir WCF si vous faites affaire avec de simples services Web XML / JSON ... J'ai remplacé la plupart de nos services à base de WCF xml reposant / JSON webservices ... la plupart de ces services sont en fait un simple fichier ASPX où je suis mes résultats dans la sortie xml / JSON

NET Framework est livré avec intégré xml / JSON lecteurs et écrivains que vous pouvez utiliser pour convertir vos structures de données (le cas échéant) au format XML / JSON

un exemple: vous pouvez utiliser la classe XmlTextWriter pour tout de suite écrire à l'Response.OutputStream. par exemple:

XmlTextWriter xtw = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
xtw.WriteStartDocument();

Vous pouvez certainement faire sans WCF. Ajouter un service Web simple et ajouter une méthode pour chaque appel asynchrone que vous voulez faire pour JSON ou XML. Les deux attributs que vous aurez besoin de connaître sont WebMethod et ScriptService .

une soluce sur les utiliser avec jQuery se trouve ici

Il se pourrait que les deux gestionnaires ont été pris en otage par la WCF. Vous pourriez essayer d'ajouter les gestionnaires dos manuellement. Si vous fusionnez dans

<httpHandlers>
  <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true"/>
</httpHandlers>

à votre configuration Web, l'WebResource.axd retourne encore 404?

Je pense que le problème est lié au changement de version du framework .net.

L'erreur est qu'il n'a pas pu charger la bibliothèque de côté client. Il y a aussi quelques erreurs 404 qui indiquent que le problème était que les fichiers ne sont pas récupérés à partir du serveur.

Alors tous les canards doivent être consécutives:

  • version correcte de asp_net est enregistré
  • paramètres utilisés web.config version correcte du cadre
  • pool d'applications est configuré pour utiliser la version correcte du cadre

Je suis le problème. Il est dû à l'acheminement du fichier global.asax tous les scripts ont été réorientent vers une autre page et il était difficile de trouver ajax fichiers de script pour la page.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top