Ошибки прерывистого потока (# 2032) с Flex 3, IE и ASP.NET

#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. Релизная сборка не имела никакого значения.