尝试在Silverlight中打开套接字时获取访问被拒绝的异常

时间:2011-06-21 12:45:22

标签: c# silverlight sockets exception

我在尝试打开套接字时遇到Access Denied异常。 我的连接功能如图所示。

internal void Connect()
        {
            try
            {
                //AccessPolicy = new SocketClientAccessPolicyProtocol();


                args = new SocketAsyncEventArgs();


                args.UserToken = socket;
                args.RemoteEndPoint = endPoint;
                args.Completed += new EventHandler<SocketAsyncEventArgs>(OnConnect);

                **isConnected = socket.ConnectAsync(args);**
                //autoEvent.WaitOne();

                if (args.SocketError != SocketError.Success)
                    throw new SocketException((int)args.SocketError);
                if(isConnected)
                global::System.Windows.MessageBox.Show("Connected");
            }
            catch (Exception ex)
            {
                global::System.Windows.MessageBox.Show(ex.Message);
            }
        }

然而,ConnectAsync函数执行正常,因为isConnected正在实现,但套接字没有连接。

2 个答案:

答案 0 :(得分:0)

http://drdobbs.com/windows/208403238

  

查看代码,您将看到它使用TcpListener类来侦听传入的客户端连接。客户端连接后,代码会检查以下值的请求:<policy-file-request/>

     

Silverlight连接后会自动将此文本发送到策略文件套接字。如果请求包含正确的值,则代码会将客户端访问策略的内容写回客户端流(请参阅OnReceiveComplete()方法)。收到策略文件后,Silverlight会对其进行解析,检查它是否允许访问所需的端口,然后接受或拒绝应用程序正在尝试进行的套接字调用

答案 1 :(得分:0)

如果这是浏览器中的Silverlight,则需要一个套接字策略服务器。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/cc645032%28v=vs.95%29.aspx

相关问题