我需要使用websockets来实现我的silverlight客户端和服务器之间的双向通信。我可以连接/断开服务器和 OnOpen &客户端和服务器中的 OnClose 事件都很好,但我在向服务器发送消息时遇到问题:
当我向服务器发送消息时,我在客户端没有收到任何错误,因为我在服务器上的服务的 OnMessage 操作从未调用过(从客户端发送的消息没有任何问题但是服务器永远不会收到!)
您可以获取我的示例代码here
感谢
答案 0 :(得分:1)
策略文件仅存在于服务器端。
请看一下: MSDN
您可以通过HTTP或策略服务器(在端口943上)传递策略文件。
要使用HTTP检索套接字策略文件,应用程序应在传递给Socket :: ConnectAsync方法的System.Net.Sockets :: SocketAsyncEventArgs实例上将SocketAsyncEventArgs :: SocketClientAccessPolicyProtocol属性设置为Http。
祝你好运答案 1 :(得分:0)
“使用时的另一个限制 套接字类是那个 目标端口范围即网络 应用程序允许连接 必须在4502-4534范围内。 这些是唯一的目标端口 允许连接来自 使用Silverlight应用程序 插座。“
来源:
http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx拥有一个策略文件只会成功 使用上述端口范围。 如果没有策略文件,它将无法正常工作 一点都不这两个(还有更多) 限制不适用于受信任的 应用强>
<强>更新强>
尝试将您的政策文件更改为:
<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>