ASP.NET AXD ресурсы блокируются на стороне клиента? - PullRequest
4 голосов
/ 02 марта 2010

У меня есть веб-приложение, которое я размещаю, и мой клиент сообщает, что некоторые библиотеки 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 ]

4 голосов
/ 02 марта 2010

Если это происходит с классическими 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 голосов
/ 07 января 2014

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

  • Откройте соответствующий сборщик с помощью Reflector или 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>
0 голосов
/ 08 марта 2010

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

...