最近在项目中使用Silverlight(2.0 3.0beta),服务端是Java的,WebService引擎使用的axis1.1,在使用过程中发现对于在axis中发布的WebService在VS2008中引用时无法正确产生代理类,只有接口没有方法,给调用服务方法带来不便。
后来研究发现,原来是WebService风格的问题引起,axis缺省使用rpc风格的WebService,而.NET中缺省使用document风格的(难道Silverlight只能处理document风格的?),而axis本身是支持多种风格的WebService的,只需要在发布配置文件中明确指定style属性就行了,就象下面这样定义配置:
<service name="YourServiceName" provider="java:RPC" style="document">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="your class full name"/>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="sendXMLDeclaration" value="true"/>
</service>
WebService有多种风格,包括rpc,document, wrapped等,上面只是一个示例配置,可以根据实际情况修改style属性。