Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Silverlight访问Rally SOAP服务_Silverlight_Rally - Fatal编程技术网

从Silverlight访问Rally SOAP服务

从Silverlight访问Rally SOAP服务,silverlight,rally,Silverlight,Rally,可以从Silverlight访问Rally的SOAP服务吗?我可以通过桌面应用程序中的.NET 2.0代理访问该服务,但不能通过Silverlight中的WCF客户端代理访问。我得到了以下熟悉的例外 System.ServiceModel.CommunicationException: 在运行时发生错误 正在尝试向URI发出请求。。。。这可能是由于试图 以跨域方式访问服务而无需适当的 跨域策略,或不适合SOAP的策略 服务。您可能需要联系服务的所有者才能发布 跨域策略文件,以确保它允许与SOAP

可以从Silverlight访问Rally的SOAP服务吗?我可以通过桌面应用程序中的.NET 2.0代理访问该服务,但不能通过Silverlight中的WCF客户端代理访问。我得到了以下熟悉的例外

System.ServiceModel.CommunicationException: 在运行时发生错误 正在尝试向URI发出请求。。。。这可能是由于试图 以跨域方式访问服务而无需适当的 跨域策略,或不适合SOAP的策略 服务。您可能需要联系服务的所有者才能发布 跨域策略文件,以确保它允许与SOAP相关的HTTP 要发送的标题。此错误也可能是由于使用内部 在web服务代理中键入,而不使用 InternalsVisibleToAttribute属性。请查看内部异常 更多细节


我认为问题是由于试图从Silverlight发出跨域请求造成的,这需要在服务器上安装跨域策略文件。如果是这种情况,为什么桌面应用程序不需要这样的策略?

我不是Silverlight专家,但这看起来像Silverlight强加的跨域脚本/安全沙箱,以确保Silverlight客户端不会向下载它们的服务器/主机以外的站点发出请求,除非服务提供商/开发者特别授予Silverlight客户端该权利。在上面的错误消息中:

“您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的HTTP头。”

我认为“服务所有者”是指Silverlight主机的所有者,而不是“外部”Web服务(在本例中为Rally)

桌面和/或控制台应用程序不会有相同的沙箱限制。通过Silverlight客户端访问其他供应商的Web服务时,可能会遇到同样的问题

您可能会发现以下特定于Silverlight的线程:


有助于了解如何在服务器上设置和配置Silverlight跨域策略文件的详细信息。

Silverlight的构建考虑到了安全性。这意味着Silverlight应用程序的跨站点脚本在默认情况下是关闭的,并且必须根据具体情况启用。另一方面,.NET桌面应用程序通常具有更大的安全权限,可以调用任何web服务、COM对象和本机API


在Silverlight中解决此问题的方法是在服务器上创建服务。Silverlight客户端代码调用服务器端服务,服务器端服务反过来调用第三方web服务。服务器端服务可以打赌.NET、java等等。Web服务器通常可以随意调用—问题已解决。

通过使用Silverlight 5中提供的扩展权限功能,自己解决了这个问题。由于xap部署在内部internet上,因此此解决方案是可以接受的。

感谢您的回复。我考虑过这种方法,但通过在Silverlight 5中使用提升信任来解决它。是的,这是解决它的另一种方法:在你的应用程序中释放一堆权限。:)如果您不需要在浏览器内运行,那么在浏览器应用程序外执行提升信任可能会更容易。不同的是,浏览器中提升信任的内容看起来像是你必须签署你的应用程序才能让一切正常工作。哪一个对你来说更容易取决于你的情况和组织。