Ресурсы ASP.NET AXD блокируются на стороне клиента?

У меня есть веб-приложение, которое я размещаю, и мой клиент сообщает, что некоторые библиотеки JavaScript Telerik, включенные на сайт (но не все из них), не работают должным образом.

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

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

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

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

Другие попытки:

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

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

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

Есть идеи относительно того, что может пойти не так, или даже какие еще вопросы задать? Кто-нибудь видел хоть что-нибудь подобное?


person MisterZimbu    schedule 02.03.2010    source источник
comment
Когда они дома, набираются ли они в корпоративную сеть, чтобы выйти? Или они проходят через VPN, которая маршрутизирует трафик через эту корпоративную сеть?   -  person NotMe    schedule 02.03.2010
comment
По их словам, используемый домашний компьютер вообще не был подключен к VPN и не подключался к корпоративной сети.   -  person MisterZimbu    schedule 02.03.2010


Ответы (3)


Если это происходит с классическим 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 и проверить, что именно происходит с ошибочными запросами (например, ответ сервера, что находится в теле ответа и т. Д.).

person lingvomir    schedule 02.03.2010
comment
Он запускает RadControls для ASP.NET; извините за то, что не указал эту часть. Я сохраняю обходной путь UseEmbeddedScripts в качестве последнего средства, так как я лучше исправлю проблему в ее корне, если смогу. - person MisterZimbu; 02.03.2010
comment
В этом случае у вас нет другого выбора, кроме как использовать прокси-сервер отладки HTTP (Fiddler, Firebug) и посмотреть, что именно происходит с запросами браузера WebResource.axd и ответами сервера. - person lingvomir; 04.03.2010

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

person MisterZimbu    schedule 08.03.2010

Чтобы удалить WebResource.axd и ScriptResource.axd со страницы, вам необходимо

  • Откройте связанную сборку с помощью Reflector или ILSpy, а затем сохраните ее встроенные файлы JS из раздела ресурсов.
  • Теперь добавьте их в качестве ссылок на скрипты, используя asp: 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>
person VahidN    schedule 07.01.2014