#asp.net #apache-flex #internet-explorer
#asp.net #apache-flex #internet-explorer
Вопрос:
У меня кошмарный сон со следующей проблемой, которую я попытался представить как можно проще, описав простейший тестовый пример, в котором мне удалось воссоздать проблему.
Во-первых, у меня есть ASP.NET приложение.
Во-вторых, у меня есть гибкий клиент, который использует HTTPService для доступа к ресурсам на ASP.NET веб-сайт.
доступ к службам осуществляется с помощью кода, подобного этому:
<mx:HTTPService id="rpcTest"
url="{url}"
result="onServiceResult(event)"
method="GET"
resultFormat="text"
useProxy="false"
showBusyCursor="true">
</mx:HTTPService>
В моем приложении Flex у меня есть кнопка, которая делает это:
private function doTest2():void
{
arrMsgs.removeAll();
mgrTest1.loadData(someUrl);
mgrTest2.loadData(someUrl);
mgrTest3.loadData(someUrl);
}
где каждый объект mgrTest * является компонентом MXML, обертывающим HTTPService, как описано выше:
Проблема в том, что нажатие этой кнопки может вызвать следующую ошибку:
[Ошибка RPC faultString=»Ошибка HTTP-запроса» faultCode=»Сервер.Ошибка.Запрос «faultDetail=»Ошибка: [IOErrorEvent type=»IOError» bubbles=false cancelable= false eventPhase=2 text=»Ошибка #2032: ошибка потока. URL:http://localhost:50352/Home/About «]. URL:http://localhost:50352/Home/About «] в mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[C:autobuild3.2.0frameworksprojectsrpcsrcmxrpcAbstractInvoker.as:220 ] в mx.rpc::Ответчик / ошибка()[C:autobuild3.2.0frameworksprojectsrpcsrcmxrpcResponder.as:53 ] в mx.rpc::AsyncRequest/fault()[C:autobuild3.2.0frameworksprojectsrpcsrcmxrpcAsyncRequest.as:103 ] в DirectHTTPMessageResponder/errorHandler()[C:autobuild3.2.0frameworksprojectsrpcsrcmxmessagingchannelsDirectHTTPChannel.as:362 ] во flash.events::EventDispatcher/dispatchEventFunction() во flash.events ::EventDispatcher/dispatchEvent() во flash.net::URLLoader/onComplete()
Это прерывистое поведение, которое действительно ставит меня в тупик!
Наблюдения:
1 — Проблема является прерывистой. Это часто происходит при первом нажатии кнопки. Это почти никогда не повторяется, если я просто продолжаю нажимать на кнопку (т. Е. Все службы работают). Если я затем подожду 5 минут или около того и снова нажму кнопку, почти всегда снова произойдет сбой.
2 — Этого никогда не произойдет, если я просто вызову одну службу вместо трех.
3 — Этого никогда не происходит в Firefox
4 — Если я попытаюсь использовать Fiddler / Charles для проверки трафика на клиентском компьютере, этого никогда не произойдет.
5 — Кажется, не имеет значения, к какому типу ресурса я обращаюсь на ASP.NET сайт. (aspx, ashx, xml)
6 — Похоже, не имеет значения, на какой формат результата HTTPService установлен.
7 — Мне не удалось воссоздать проблему с доступом к ресурсам из не ASP.NET сайт.
Я боролся с этим в течение нескольких дней, и лучшее, что я придумал, это использовать таймер, запускающийся каждые 5 секунд, который использует HTTPService для доступа к простому URL-адресу для сохранения активности на сервере. По какой-то причине это, кажется, помогает, но я не уверен, почему, или даже могу ли я полагаться на это как на решение.
Если кто-нибудь может помочь, я был бы очень благодарен. (У меня неловкая ситуация с cutomer, которую мне нужно устранить:-(
Спасибо
Гэри Б
Пример заголовков:
HTTP / 1.1 200 Сервер в порядке: ASP.NET Сервер разработки / 10.0.0.0 Дата: Ср., 15 июня 2011 г. 11:04:09 GMT X-AspNet-Версия: 4.0.30319 X-AspNetMvc-Версия: 3.0 Управление кэшем: приватный Тип содержимого: текст / html; кодировка= utf-8 Длина содержимого: 921 Подключение: Закрыто
Я взял их из Fiddler, конечно, как только я использую Fiddler, я никогда не получаю ошибку! Я предполагаю, что заголовки такие же, как были бы возвращены в Flex, если бы Fiddler там не было. Не уверен, смогу ли я добраться до заголовков в Flex.
Комментарии:
1. Какую версию Flash Builder вы используете? Происходит ли это также в рабочей среде (release build) и / или на localhost?
2. Да, это происходит на localhost с сервером разработки Visual Studio. Не уверен насчет сборки релиза. Я попробую это. Приветствия.
3. Я использую Flex Builder 3, но я получаю те же проблемы с 4
4. Что ж, это действительно сомнительная ошибка. Это может быть связано с несколькими причинами. Это может произойти из-за того, что у вас нет правильного междоменного xml на вашем сервере. Другие пишут об определенных http-заголовках, которые вызывают проблему. Я также нашел 1 отчет, в котором говорится, что это было вызвано сетевым менеджером во Flash Builder 4. Не могли бы вы показать нам точные заголовки вашего ошибочного http-запроса?
5. Релизная сборка не имела никакого значения.