Проблема с отправкой сообщений от клиента Silverlight с использованием прототипа websockes - PullRequest
1 голос
/ 25 апреля 2011

Мне нужно использовать веб-сокеты для реализации двунаправленной связи между моим клиентом silverlight и сервером.Я мог подключиться / отключиться от / с сервера, и оба OnOpen & OnClose события как на клиенте, так и на сервере сработали хорошо, но у меня есть проблема с отправкой сообщений на сервер:когда я отправляю сообщение на сервер, я не получаю никакой ошибки на стороне клиента, где никогда не вызывается операция OnMessage моей службы на сервере (сообщение отправлено с клиента без проблем, кроме сервераникогда не получай это!).Вы можете получить мой пример кода здесь .Спасибо

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Файл политики существует только на стороне сервера.

Пожалуйста, посмотрите: MSDN

Файл политики можно доставить по HTTP или с помощью сервера политики (включенпорт 943).

Чтобы использовать HTTP для получения файла политики сокетов, приложение должно установить для свойства SocketAsyncEventArgs :: SocketClientAccessPolicyProtocol значение Http в экземпляре System.Net.Sockets :: SocketAsyncEventArgs, переданном в Socket:: Метод ConnectAsync.

Удачи

0 голосов
/ 25 апреля 2011

"Еще одно ограничение на использование классы сокетов в том, что диапазон портов назначения, что сеть приложению разрешено подключаться к должно быть в пределах 4502-4534. Это единственные порты назначения разрешено соединением от Приложение Silverlight, использующее розетки. "

Источник:
http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx

Наличие файла политики только сделает его работать с указанным диапазоном портов. Без файла политики это не будет работать совсем. Эти двое (и многие другие) ограничения не распространяются на доверенных приложения.

http://social.msdn.microsoft.com/Forums/en/silverlightdeveloper/thread/b4f7120d-71d9-4132-9c31-b456803cd32f


Обновление

попробуйте изменить файл политики следующим образом:

<access-policy>
<cross-domain-access>
<policy>
  <allow-from http-request-headers="*">
    <domain uri="*" />
  </allow-from>
  <grant-to>
    <socket-resource port="4502-4534" protocol="tcp" />
  </grant-to>
</policy>
</cross-domain-access>
</access-policy>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...