2011-01-21 2 views
0

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

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

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

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

Я попытался следующие, никто не работал я:

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

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

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

Update 1: Более подробная информация
Я смотрел на то, что происходит с использованием вкладки 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 или что-то еще?

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

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

ответ

0

В моем случае, что на самом деле фиксированной она меняется, как я назвал службу WCF.

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

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

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

Спасибо всем за содержательные ответы ,

1

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

+0

Выполнено, отредактирован вопрос с результатами. Любые другие предложения? – MGOwen

1

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

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

пример: вы можете использовать класс XmlTextWriter, чтобы сразу записать в Response.OutputStream. например:

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

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

walkthough об использовании их с JQuery can be found here

1

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

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

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

+0

ОК, есть определенная разногласия между моей маршрутизацией WCF и файлом ajax. Я обновляю вопрос с дополнительной информацией. – MGOwen

1

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

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

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

  • правильная версия asp_net зарегистрирована
  • настройки в сети.Использование конфигурации правильная версия базы
  • пул приложений настроена на использование правильной версии базы
0

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

Смежные вопросы