我需要使用websocket来实现silverlight客户端和服务器之间的双向通信。我可以连接/断开与服务器的连接,并且OnOpen& 客户端和服务器中的OnClose事件都很好地激发了,但我在向服务器发送消息时遇到了问题:
当我向服务器发送消息时,我在客户端没有收到任何错误,因为我在服务器上的服务的OnMessage操作从未调用过(从客户端发送的消息没有任何问题,但服务器从未收到!(
你可以在这里得到我的示例代码
感谢
策略文件仅存在于服务器端。
请看一下:MSDN
您可以通过HTTP或策略服务器(在端口943上(传递策略文件。
若要使用HTTP检索套接字策略文件,应用程序应在传递给socket::ConnectAsync方法的System.Net.socket::SocketAsyncEventArgs实例上将SocketAsync EventArgs:SocketClientAccessPolicyProtocol属性设置为HTTP
祝好运
"使用的另一个限制sockets类是网络的目标端口范围允许应用程序连接到必须在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>