2010-03-02 3 views
3

У меня есть веб-приложение, которое я размещаю, а мой клиент сообщает, что некоторые библиотеки javascript Telerik, которые включены в сайт (но не все), работают некорректно.Ресурсы ASP.NET AXD блокируются на стороне клиента?

Что мне удалось диагностировать до сих пор, так это то, что в какой-то момент процесса ресурсы WebResource.axd, содержащие код Javascript Telerik, блокируются. Попросить клиента перейти непосредственно к самому файлу AXD с тем же самым запросом, приводит к сообщению об ошибке «Соединение с сервером было сброшено» в Internet Explorer.

Клиент попытался загрузить этот файл с нескольких компьютеров по их местонахождению, а также на компьютер за пределами своего брандмауэра и сети, а также на машине, работающей в их доме, и получает ту же ошибку каждый раз. Они попытались использовать как Internet Explorer, так и Firefox.

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

В соответствии с журналами IIS все попытки регистрации загруженного ресурса привели к результату 200 HTTP OK.

Другие вещи, которые были покушений:

  • Ссылка на nonexistant 404.axd (дал желтый ASP.NET 404 сообщение об ошибке, как ожидалось)
  • Ссылка на WebResource.axd, но с недопустимая строка запроса, указывающая на ресурс, который не существует (дал желтый недопустимый viewstate ASP.NET или недопустимую строку base64, как ожидалось)
  • Ссылка на тот же WebResource.axd, но через другой заголовок узла (такое же «соединение» сброс ").

Теперь я в недоумении, что может быть проблемой на данный момент. На нашем хостинговом сервере уже много лет размещаются десятки различных приложений ASP.NET (включая несколько экземпляров одного из них), и это первая жалоба, которую я видел по этому поводу.

Я на 99% уверен, что проблема на чем-то на стороне клиента связана с неправильной настройкой фильтрации содержимого брандмауэра или маршрутизатора, но это не объясняет, почему клиент видит те же проблемы как вне брандмауэра, так и дома ,

Любые идеи относительно того, что может быть неправильным или даже какие дополнительные вопросы задать? Кто-нибудь видел что-то даже дистанционно?

+0

Когда они «дома», они набирают номер в корпоративной сети, чтобы выйти? Или они переходят через VPN, которая маршрутизирует трафик через эту корпоративную сеть? – NotMe

+0

Согласно им, используемый домашний ПК не был VPN'ed или набран в корпоративную сеть вообще. – MisterZimbu

ответ

0

Никогда не выяснял, в чем проблема, но обновление RadControls до последнего (окончание Q1'09), похоже, решило проблему.

4

Если это происходит с классическим RadControls для ASP.NET, попробуйте установить UseEmbeddedScripts = "false" для элементов управления на странице. Это заставит их обслуживать все сценарии из папки RadControls (физические .js-файлы) вместо использования встроенных ресурсов (WebResource.axd). Естественно, вы должны убедиться, что у вас есть файлы сценариев в папке RadControls.

Если это происходит с RadControls для ASP.NET AJAX, тогда скрипты элементов управления загружаются с помощью диспетчера сценариев (ScriptResource.axd, а не WebResource.axd). В любом случае вы можете попробовать использовать Telerik RadScriptManager вместо ASP.NET ScriptManager - это будет объединять и сжимать все сценарии в один запрос.

Наконец, вы можете попросить своего клиента загрузить и установить Fiddler для IE или Firebug для Firefox и проверить, что именно происходит с неудавшимися запросами (например, ответ сервера, то, что находится в теле ответа и т. Д.).

+0

Он запускает RadControls для ASP.NET; извините за не указанный эта часть. Я сохраняю обходное решение UseEmbeddedScripts как последнее средство, поскольку я бы скорее исправил проблему в ее корне, если смогу. – MisterZimbu

+0

В этом случае у вас нет другого выбора, кроме как использовать прокси-сервер отладки HTTP (Fiddler, Firebug) и посмотреть, что именно происходит с запросами браузера WebResource.axd и ответами сервера. – lingvomir

0

WebResource.axd Для устранения и ScriptResource.axd со страницы, вам нужно

  • Открыть связанное assmbly с использованием отражателя или ILSpy, а затем сохранить его внедренные JS файлов из раздела ресурсов.
  • Теперь добавьте их в качестве Ссылки сценария с помощью жереха: ScriptManager

Позже эти определения будут визуализируются как:

<script src="staticJS1.js" type="text/javascript"></script> 
<script src="staticJS2.js" type="text/javascript"></script> 

И не будут блокироваться больше.

<asp:ScriptManager ID="Scriptmanager1" runat="server"> 
     <Scripts> 
      <asp:ScriptReference Name="MicrosoftAjaxWebForms.js" Assembly="System.Web.Extensions" 
       Path="~/staticJS1.js" /> 
      <asp:ScriptReference Name="MicrosoftAjax.js" Assembly="System.Web.Extensions" Path="~/staticJS2.js" /> 
     </Scripts> 
</asp:ScriptManager> 
Смежные вопросы