CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2
  1. #1
    Join Date
    Dec 2008

    SocketError.AccessDenied with Silverlight Sockets

    I'm in the middle of trying to get my Silverlight application to communicate via sockets with my webserver but I'm having trouble connecting the Silverlight socket to the server.

    This is the setup:
    My webserver is set to listen to the 5432 port using a TcpListener on IPAddress.Any. I've got a clientaccesspolicy.xml accessable on localhost:943/clientaccesspolicy.xml looking like this:

    1    <access-policy>
    2     <cross-domain-access>
    3      <policy>
    4       <allow-from>
    5        <domain uri="*"/>
    6       </allow-from>
    7       <grant-to>
    8        <socket-resource port="4532" protocol="tcp"/>
    9       </grant-to>
    10     </policy>
    11    </cross-domain-access>
    12   </access-policy>
    The webserver hosting the access policy is a homemade one using HttpListeners but that works great using normal WebRequests with silverlight so I cannot see how that would be a problem here.

    I try to setup the silverlight socket using this following code:

    1    DnsEndPoint endPoint = new DnsEndPoint("localhost", 4532);
    2    _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    3    SocketAsyncEventArgs args = new SocketAsyncEventArgs { RemoteEndPoint = endPoint };
    4    args.Completed += OnSocketConnectCompleted;
    5    _socket.ConnectAsync(args);
    Of course I've tried using the 'Application.Current.Host.Source.DnsSafeHost' instead of "localhost" since all tutorials and guides use it but I haven't been able to find any information about what exactly it contains, when I debug my silverapp. it's set to "" (empty string) which of course throws when inserted into the DnsEndPoint.

    Finally worth mentioning is that I've checked the traffic using a sniffer and I cannot even catch the silverlight making any localhost requests so I suspect the problem lies in how I setup the DnsEndPoint (or some such).

    Any help would be superb, I'm really at the end of my rope.

    I just found a post regarding the same matter described here:

    I did try to change the port to 4530 everywhere, which should be in range, but still no success.
    Last edited by ovidiucucu; December 23rd, 2008 at 07:50 AM. Reason: added [code] and [/code] tags

  2. #2
    Join Date
    Dec 2008

    Re: SocketError.AccessDenied with Silverlight Sockets

    Finally I've found a solution to this.

    It seems Silverlight isn't designed to make it easy for you to use sockets and only after I tried setting up a custom made client access policy server the client would allow me to connect, thanks a lot to Dr. Dobb for this:

    When using sockets Silverlight doesn't request the access policy file like it does when using web services (using http that is) but instead sends a neat little string <policy-file-request/> to the policy server which then needs to kindly send back the policy file. Well, well, problem solved at least.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Windows Mobile Development Center

Click Here to Expand Forum to Full Width

On-Demand Webinars (sponsored)

We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.