Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Flash + .NET (http://www.flasher.ru/forum/showthread.php?t=121166)

Moristar 09.02.2009 16:40

Flash + .NET
 
Добрый день. Хочу задать вопрос, ибо схожу с ума уже без ответа.
Пишу обычный чат с клиентом на AS3 и сервером на C#. Все класс, все работало, пока не вынес исходники за пределы рабочей тачки с Flex'ом и т.п. Сразу же начало просить policy и т.п. Перечитав весь интернет, лайвдоки, переспрашивав всех знакомых и поломав голову вкрай, прошу вашего совета. Ситуация следующая.

После вызова
Код AS3:

Socket.connect("127.0.0.1", 8045)

из as3 на сервер приходит соединение со строчкой
Код AS3:

<policy-file-request/>\0

. Я его обрабатываю на сервере следующим образом:

Код AS3:

string response = "<?xml version=\"1.0\"?>" +
        "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">" +
        "<cross-domain-policy>" +
        "<allow-access-from domain=\"*\" to-ports=\"*\" />" +
        "</cross-domain-policy>\0";
streamWriter.Write(response);
streamWriter.Flush();

Т.е. действую так, как предписывают инструкции.
Однако, Флеш полностью игнорируем мои потуги. В логах обращений полиси вивдим следующее:
Код:

ОК: Выполняется поиск директив <allow-access-from> в файлах политики, чтобы авторизовать загрузку данных из ресурса по адресу xmlsocket://127.0.0.1:8045 инициатором запроса из file:///G|/Documents/FlashChatServer/%21BIN/ChatClient.swf
Предупреждение: На xmlsocket://127.0.0.1:8045 истекло время (3 сек) ожидания файла политики для сокета.  Это не должно привести к каким-либо проблемам, однако см. описание на веб-сайте http://www.adobe.com/go/strict_policy_files_ru.
Ошибка: Запрос ресурса на xmlsocket://127.0.0.1:8045 источника запроса из file:///G|/Documents/FlashChatServer/%21BIN/ChatClient.swf отклонен из-за отсутствия разрешений в файле политики.

Я пробовал разные варианты. Ставил secure="true" и убирал, ставил master-only и all, загружал полиси из файла crossdomain.xml из известного примера на Питоне и Перле. Я вообще убирал обработку запроса на сервере. Ставил Thread.Sleep. Поднимал IIS на машине и выкладывал в корень crossdomain.xml с разным наполнением. Прописывал вызов
Код AS3:

Security.loadPolicyFile

. Подключался telnet'ом к серверу и проверял - действительно ли пишет он мне в ответ.
Вобщем ничто из этого не повлияло на содержимое лога полиси - все то же ожидание в 3 сек. А потом сбой.
Бывало такое, что когда я ставил паузу, флеш закрывал канал и писать в него уже было нельзя, так что я подозреваю, что все же до него доходит мой файл, но вот реакция...

Помогите, пожалуйста, я уже близок к отчаянью. :wacko:

Добавлено через 19 часов 33 минуты
Товарищи! Ау! Кто-нибудь. Хоть скажите - что еще можно почитать?

IYAKOV 11.02.2009 23:28

Вот в соседнем разделе (последние посты) обсуждалось что-то похожее

Moristar 12.02.2009 16:19

Спасибо! Ссылка натолкнула на решение.
Вобщем, проблема был а в том, что при вычитке строки с запросом я использовал StreamReader.ReadLine(), а он возвращал мне ответ аж секуды через 4. К тому времени флеш уже отваливался. Я переписал вычитку напрямую NetworkStream.Read() и все пошло отлично.
Но это еще не все. Необходимо с 843 порта раздавать мета-полиси с разрешением all. А с порта на который идет соединение - раздаваать уже финальное полиси с разрешение на домен(ip) и порт.
Фухх! Дай бог вам так не мучаться как мне.

DarkLight 12.02.2009 19:07

Цитата:

Но это еще не все. Необходимо с 843 порта раздавать мета-полиси с разрешением all. А с порта на который идет соединение - раздаваать уже финальное полиси с разрешение на домен(ip) и порт.
Хм, раздачи обычного полиси с порта подключения хватает вполне.


Часовой пояс GMT +4, время: 21:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.