«Не удалось загрузить клиентскую среду ASP.NET Ajax» с WCF - все перепробовал, все равно получаю - PullRequest
0 голосов
/ 21 января 2011

Теперь я получаю сообщение «Не удалось загрузить клиентскую среду ASP.NET Ajax».Ошибка javascript на моем веб-сайте asp.net 4, как только я его запустил (откройте страницу входа).

Раньше это происходило только после того, как я нажал Ctrl-F5 (обновить страницу и все изображения / таблицы стилей / скрипты) в браузере во время отладки.

Мое приложение использует asp.net 4 (изначально написано на1.1 или 2), WCF, JsTree, некоторые элементы управления Telerik и расширения / инструментарий MS AJAX.

За несколько дней поиска в Google я обнаружил большое количество решений, предоставленных людьми с одинаковымипроблема (в том числе здесь, на SO и справочных форумах Telerik):

Я попробовал следующее, у меня не получилось ни одного:

  • Попытка поместить ToolkitScriptManager на страницу вместо ScriptManager
  • Переход к панели управления «Программы и компоненты» и «восстановление» в «Microsoft .net framework 4 Профиль клиента» и «Microsoft .net Framework 4 Extended»
  • Перемещение ScriptManager внижняя часть страницы
  • В Web.config, настройка компиляции debug = "false"
  • Запустил новый проект ASP.NET 4, добавил и обновил панель на странице, посмотрел на web.configя попытался сделать мой web.config более похожим на него
  • проверил правильность системной даты ПК
  • использовал элементы location в моем web.config, чтобы разрешить неаутентифицированный доступ к WebResource.axd, ScriptResource.axd и Telerik.Web.UI.WebResource.axd (у меня есть элементы управления Telerik на этом сайте)
  • Добавлены маршруты. Игнорировать ("{resource} .axd / {* pathInfo}");к регистрации моего маршрута в global.asax

Любые другие решения этой проблемы?

Я могу опубликовать web.config или код, если необходимо.

Обновление 1: дополнительная информация
Я посмотрел на происходящее, используя вкладку "net" firebug. Сбой запросов GET для ScriptResource.axd и Webresource.axd с 404 .Это проливает свет на проблему?

Обновление 2: Частичное решение? Я использовал историю управления исходным кодом, чтобы вернуться к web.config, прежде чем я добавил службу WCF на веб-сайт.Наконец-то сработал web.config перед тем, как я добавил это:

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

... и удалил связанную строку маршрутизации из моего global.asax:

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

Так что один илиоба были виновником.Кто-нибудь может подсказать, как служба WCF или ее маршрутизация могли вызвать эту ошибку MS Ajax?

Это мой первый сервис WCF.Я едва понимаю, что делает приведенный выше код, но я подозреваю, что проблема маршрутизации лежит в основе проблемы где-то ...

Альтернативно - может кто-нибудь предложить альтернативу WCF?Я могу жить без этого, если я смогу доставить свои данные JSON в jquery другим способом.Может быть, HttpHandler, или WebService, или веб-форма, которая выдает JSON в качестве response.write или чего-то еще?

Обновление 2: Маршрутизация
Похоже, что для маршрутизации в global.asax требуетсяслужба WCF является проблемой (см. выше).Комментирование одной строки, похоже, решает проблему.Попытка изменить маршрут маршрута ...

Решено : Я решил это сам, вижу мой принятый ответ, но, конечно, не мог сделать это так быстро без предложений по правильному путинекоторыми очень проницательными ответами, спасибо всем.

Ответы [ 7 ]

1 голос
/ 31 января 2011

Я думаю, что проблема связана с изменением версии .net framework.

Ошибка в том, что не удалось загрузить библиотеку на стороне клиента. Есть также около 404 ошибок, которые указывают на то, что проблема была в том, что файлы не были получены с сервера.

Так что все утки должны быть в ряд:

  • зарегистрирована правильная версия asp_net
  • настройки в web.config используют правильную версию фреймворка
  • пул приложений настроен на использование правильной версии фреймворка
1 голос
/ 29 января 2011

Возможно, WCF похитил два обработчика.Вы можете попробовать добавить обработчики обратно вручную.Если вы объедините

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

с вашей веб-конфигурацией, WebResource.axd все равно выдаст 404?

1 голос
/ 29 января 2011

Вы можете почти наверняка обойтись без WCF. Добавьте простой веб-сервис и добавьте метод для каждого асинхронного вызова, который вы хотите сделать для JSON или XML. Вот два атрибута, о которых вам нужно знать: WebMethod и scriptservice .

хотя об их использовании с jQuery можно найти здесь

1 голос
/ 28 января 2011

не уверен насчет ошибок ajax, однако вам действительно не нужен wcf, если вы работаете с простыми веб-сервисами xml / json ... я заменил большинство наших сервисов на основе wcf отдыхающими веб-сервисами xml / json ... большинство этих сервисов на самом деле представляют собой простой aspx-файл, в котором я выводлю свои результаты в формате xml / json

.net Framework поставляется со встроенными программами чтения и записи xml / json, которые вы можете использовать для преобразования ваших структур данных (если есть) в xml / json

пример: вы можете использовать класс XmlTextWriter для прямой записи в Response.OutputStream. например:

XmlTextWriter xtw = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
xtw.WriteStartDocument();
1 голос
/ 25 января 2011

Установить расширение браузера, которое может регистрировать запросы к серверу. Например, FireBug для Firefox. Затем вам нужно проверить все запросы браузера, сделанные на ваш сервер, и посмотреть, есть ли какие-либо ошибки или слишком короткие ответы.

0 голосов
/ 19 февраля 2011

У меня проблема.Это было связано с маршрутизацией из файла global.asax, все скрипты перенаправляли на какую-то другую страницу, и поэтому было трудно найти файлы скриптов ajax для этой страницы.

0 голосов
/ 11 февраля 2011

В моем случае то, что на самом деле исправило, изменило способ вызова службы WCF.

Из учебников, которые я читал на WCF, я упустил тот факт, что мне не нужна маршрутизация в Global.asax для вызова веб-службы, и я мог просто назвать его так:

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

(Я полагался на маршрутизацию в global.asax, чтобы позволить мне назвать это так: http://localhost/myWebApp/MethodName?param=value. Я избавился от маршрутизации и вместо этого использовал вышеуказанный способ, и проблема исчезла)

Спасибо всем за проницательные ответы.

...