2011-11-03 90 views
1

如果要使用Silverlight应用程序访问某些REST Web服务,第三方服务器(服务所在的位置,你想要访问)需要在根文件夹中有一个clientaccesspolicy.xml或crossdomain.xml。如何在不使用clientaccesspolicy.xml或crossdomain.xml的情况下使用Silverlight访问使用REST Web服务(使用Proxy?)

但是,我如何使用Silverlight应用程序使用或访问REST服务,该服务使用xml文件进行响应,但没有在该服务器上使用任何clientaccesspolicy.xml或crossdomain.xml?

如果我在浏览器的地址栏中写入服务url,我可以访问该服务并在浏览器中查看响应。你可以通过GET访问服务。

编辑:我已经假设,我将不得不使用某种代理,但如何为一个RESTful服务?它是客户端还是服务器端代理?

如何开始?

回答

1

SL安全策略阻止您访问不同域上的地址。因此,解决方案是在您的SL应用程序的域中创建代理,该代理将请求转发到您想要的Web服务。

+0

我知道的代理,但只用肥皂(WSDL)服务。如何使用REST服务执行此操作?我找不到任何示例如何访问没有crossdomain.xml但具有代理的休息服务! – Gero

+1

您必须在您的Web项目中编写代理,而不是在客户端。这样,运行.NET(或Java或其他)的服务器就不会受到Silverlight安全限制的影响。 –

+0

是的,但是它是一种什么样的代理?如果我要调用soap或wcf服务,我可以使用SLsvcUtil.exe工具从服务元数据文档生成代理。但我称之为REST服务。 – Gero

0

以上答案是正确的。我创建了一个便于使用REST的Silverlight客户端库。但是,更重要的是,我已经包含了一个传递给ASP.NET Core上的BitBucket API REST服务的示例,演示了如何在Silverlight中包含clientaccesspolicy。这一切都在这个混帐回购协议:

的的NuGet该库是 安装,包装RestClient.NET

相关问题