ASP.NET AXD Resources Заблокированы на стороне клиента?
-
23-09-2019 - |
Вопрос
У меня есть веб -приложение, которое я занимаюсь, и мой клиент сообщает, что некоторые библиотеки Telerik JavaScript, которые включены в сайт (но не все из них) работают не правильно.
Что я смог диагностировать до сих пор, так это то, что в какой -то момент в процессе ресурсы webresource.axd, содержащие код Telerik JavaScript, блокируются. Просить клиента перейти непосредственно в сам файл AXD с тем же запросом, который дает сообщение об ошибке «Соединение с сервером сброс» в Internet Explorer.
Клиент попытался загрузить этот файл с нескольких машин в их местоположении, а также машину за пределами их брандмауэра и сети, а также машину, работающую у них домой, и каждый раз получает одинаковую ошибку. Они пытались использовать как интернет -проводник, так и Firefox.
Тем не менее, я могу успешно загрузить один и тот же файл как в нашей хостинговой сети, за пределами нее, так и из моего домашнего соединения.
Согласно журналам IIS, все зарегистрированные попытки загрузить ресурс дал 200 -й HTTP -результат.
Другие вещи, которые были предприняты:
- Ссылка на отсутствие 404.AXD (дал желтое сообщение об ошибке ASP.NET 404, как и ожидалось)
- Ссылка на webresource.axd, но с недействительным запросом, указывающим на ресурс, которого не существует (дал желтый asp.net недействительный ViewState или недействительную строку Base64, как и ожидалось)
- Ссылка на тот же webresource.axd, но через другой заголовок хоста (то же самое «Сброс соединения»).
Я сейчас не могу быть проблемой на данный момент. Наш хостинг -сервер в течение многих лет проводил десятки различных приложений ASP.NET (включая несколько случаев рассматриваемого), и это первая жалоба, которую я видел по этому поводу.
Я на 99% уверен, что проблема - это что -то в конце клиента с неправильной конфигурацией фильтрации брандмауэра или контента маршрутизатора, но это не объясняет, почему клиент видит одни и те же проблемы как за пределами брандмауэра, так и дома.
Любые идеи относительно того, что может пойти не так, или даже какие дополнительные вопросы задать? Кто -нибудь видел что -нибудь еще отдаленно?
Решение 2
Никогда не выяснил, в чем проблема, но обновление RadControls до последних (Q1'09 Final), казалось, решило проблему.
Другие советы
Если это происходит с классическими RadControls для ASP.NET, попробуйте настроить useEmbeddedscripts = "false" для элементов управления на странице. Это заставит их обслуживать все сценарии из папки RadControls (физические файлы .js) вместо использования встроенных ресурсов (webresource.axd). Естественно, вы должны убедиться, что у вас есть файлы скрипта в папке RadControls.
Если это происходит с RadControls для ASP.NET AJAX, то сценарии элементов управления загружаются с помощью диспетчера скриптов (scriptresource.axd, а не webresource.axd). В любом случае, вы можете попробовать использовать Telerik Radscriptmanager вместо ScriptManager ASP.NET -Это объединит и сжимает все сценарии в один запрос.
Наконец, вы можете попросить своего клиента загрузить и установить Fiddler для IE или Firebug для Firefox и проверить, что именно происходит с запросами, которые сняты (например, ответ на сервер, что в корпусе ответов и т. Д.).
Устранить WebResource.axd
а также ScriptResource.axd
На странице вам нужно
- Откройте связанные с ними, используя отражатель или 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>