2010-05-26 3 views
1

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

An attempt was made to access a socket in a way forbidden by its access permissions.

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

args.SocketClientAccessPolicyProtocol = SocketClientAccessPolicyProtocol.Http 

Я не в состоянии получить этот ход. Какие-либо предложения?

ответ

1

Au contraire, разъемы широко поддерживаются в 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> 
+0

Вам не нужно «обеспечить clientaccesspolicy.xml на той же машине, вы подключаетесь на порт 943 через другой сокет-сервер», так как Silverlight 4 , путем specefying SocketClientAccessPolicyProtocol.Http, поскольку у вас есть он будет получен от хоста веб-сайта – markmnl

0

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

Смежные вопросы