Silverlight 3 + Java 网络服务

Posted

技术标签:

【中文标题】Silverlight 3 + Java 网络服务【英文标题】:Silverlight 3 + Java WebService 【发布时间】:2010-03-12 08:42:02 【问题描述】:

我有一个 Silverlight 3 项目,我需要调用 Java WebService - 绑定没问题(SOAP 1.1 和 basicHttpBinding):

客户端配置文件:

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="SkyinfoTestInterfaceExport2_SkyinfoTestInterfaceHttpBinding"
                maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
                <security mode="None">
                    <transport>
                        <extendedProtectionPolicy policyEnforcement="Never" />
                    </transport>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="myAddress"
            binding="basicHttpBinding" bindingConfiguration="SkyinfoTestInterfaceExport2_SkyinfoTestInterfaceHttpBinding"
            contract="SkyInfoServiceReference.SkyinfoTestInterface" name="SkyinfoTestInterfaceExport2_SkyinfoTestInterfaceHttpPort" />
    </client>
</system.serviceModel>

当我在客户端调用方法时,我收到此策略错误:

尝试向 URI“...”发出请求时出错。这可能是由于在没有适当的跨域策略或不适合 SOAP 服务的策略的情况下尝试以跨域方式访问服务。您可能需要联系服务的所有者以发布跨域策略文件并确保它允许发送与 SOAP 相关的 HTTP 标头。此错误也可能是由于在 Web 服务代理中使用内部类型而不使用 InternalsVisibleToAttribute 属性造成的。有关详细信息,请参阅内部异常。

我知道这 2 个策略 XML 文件,但我尝试调用的 Java EE 服务托管在我无权访问的 IBM WebSphere Process Server 上。

有人知道如何解决这个政策例外吗?

【问题讨论】:

是的,我有 WSDL。客户端没问题 - 问题是操作调用,因为我没有跨域策略。 【参考方案1】:

由于您无权访问服务器来实施跨域策略,因此您需要实施代理 RIA 服务。只需在本地服务上模仿请求/响应并将这些请求转发到原始服务 - 然后根据需要返回响应。

【讨论】:

谢谢!如果我可以访问服务器,我需要做什么?只需上传clientaccesspolicy.xml文件到服务根? 是的。客户端访问策略允许您使用跨域服务。许多常见的公共服务都启用了此功能,例如 Flickr。 msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx

以上是关于Silverlight 3 + Java 网络服务的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight 3 中的新客户端网络堆栈可以直接连接到 Azure 存储或网格吗?

在 Silverlight 3 中请求客户端访问策略文件

调试 Silverlight RIA 服务 SubmitChanges

csharp 闪光/ Java的/ Silverlight的

在 Silverlight 中刷新 DataGrid

Lync Server 2013 UCWA功能&IE增强关闭&Silverlight安装