Розетка Silverlight

Я пытаюсь подключить клиент Silverlight к серверу сокетов и по-прежнему получаю следующую ошибку:

Была сделана попытка получить доступ к сокету способом, запрещенным его разрешениями на доступ.

Я считаю, что мне нужно указать clientaccesspolicy.xml либо через сервер сокетов, либо через путь http: //: 80 / clientaccesspolicy.xml со следующим установленным параметром

args.SocketClientAccessPolicyProtocol = SocketClientAccessPolicyProtocol.Http

Я не могу запустить это. Какие-либо предложения?


person Benny    schedule 26.05.2010    source источник


Ответы (2)


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

Мое решение: добавлен выделенный сервер сокетов на сервере для предоставления следующего clientaccesspolicy.xml при подключении клиента:

<?xml version="1.0" encoding="utf-8"?>
<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>
person Benny    schedule 18.06.2010
comment
Вам не нужно предоставлять clientaccesspolicy.xml через другой сервер сокетов на том же компьютере, к которому вы подключаетесь через порт 943, начиная с Silverlight 4, указав SocketClientAccessPolicyProtocol.Http, поскольку он будет получен с хоста веб-сайта. - person markmnl; 21.05.2012

Вы не можете. Было бы мало смысла ограничивать номера портов TCP в браузере, если бы вы не могли обойти эти ограничения.

person AnthonyWJones    schedule 26.05.2010