如何使用Silverlight使用WCF服务而无需跨域策略

时间:2013-04-26 20:28:59

标签: wcf silverlight rest

我在互联网上有RESTful服务但Silverlight需要跨域设置,我需要使用Silverlight使用此服务,我已经尝试过将WCF服务作为中间件,但遗憾的是这不起作用。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用Javascript Bridge。我没有尝试过这种方法但你可以使用ajax调用然后通过JS桥“推送”到SL。

答案 1 :(得分:1)

为服务器端创建一个util类,例如 Util.DoRequest(字符串地址):string

来自msdn

通过WCF RIA服务向您的客户返回readStream.ReadToEnd。(域名服务类)

通过这种方式,如果您的服务器可以访问此RESTful服务,或者它已经位于那里,那么您的xap不需要任何跨域配置。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create (args[0]);

        // Set some reasonable limits on resources used by this request
        request.MaximumAutomaticRedirections = 4;
        request.MaximumResponseHeadersLength = 4;
        // Set credentials to use for this request.
        request.Credentials = CredentialCache.DefaultCredentials;
        HttpWebResponse response = (HttpWebResponse)request.GetResponse ();

        Console.WriteLine ("Content length is {0}", response.ContentLength);
        Console.WriteLine ("Content type is {0}", response.ContentType);

        // Get the stream associated with the response.
        Stream receiveStream = response.GetResponseStream ();

        // Pipes the stream to a higher level stream reader with the required encoding format. 
        StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);

        Console.WriteLine ("Response stream received.");
        Console.WriteLine (readStream.ReadToEnd ());
        response.Close ();
        readStream.Close ();

答案 2 :(得分:1)

最好将跨域策略文件放在服务器中,而不是尝试未知方式。为什么您不需要在服务器中拥有跨域策略文件和客户端访问文件?它有什么具体原因吗?