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% уверен, что проблема связана с неправильной конфигурацией фильтрации содержимого брандмауэра или маршрутизатора, но это не объясняет, почему клиент видит те же проблемы как вне брандмауэра, так и дома.

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

3 ответа

Решение

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

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

Устранить 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>
Другие вопросы по тегам