【发布时间】:2015-09-18 17:01:51
【问题描述】:
我有一个由 Apache Axis 客户端调用的 .Net Web 服务。他们在我们的服务上调用了一个名为getBulkBalance 的方法,该方法为活跃玩家获取游戏中玩家的余额,用于滚动代码等。该调用适用于单个玩家请求,但不适用于多个请求,使getBulkBalance 相当...没用,因为还有一个getBalance 方法。
是因为有多个节点,如下图:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:GetBulkBalanceRequest>
<!--Optional:-->
<tem:secureLogin>login</tem:secureLogin>
<!--Optional:-->
<tem:securePassword>password</tem:securePassword>
<!--Zero or more repetitions:-->
<tem:playerIDList>60</tem:playerIDList>
<tem:playerIDList>61</tem:playerIDList>
</tem:GetBulkBalanceRequest>
</soapenv:Body>
</soapenv:Envelope>
如果他们只打电话给一个,它工作正常。如果他们在一个节点中传入60,61,它工作正常。另一方不会/不能改变他们的客户端处理 Int64 数组的方式。
我的方法是这样的:
[WebMethod]
[SoapDocumentMethod(ParameterStyle = SoapParameterStyle.Bare, Action = "GetBulkBalance")]
[return: XmlElement(ElementName = "GetBulkBalanceResponse")]
public GetBulkBalanceResponse GetBulkBalance(GetBulkBalanceRequest GetBulkBalanceRequest)
GetBulkBalanceRequest 如下:
[Serializable]
public class GetBulkBalanceRequest
{
[XmlElement(Namespace = Constants.ServiceNamespace)]
public string secureLogin;
[XmlElement(Namespace = Constants.ServiceNamespace)]
public string securePassword;
[XmlElement(Namespace = Constants.ServiceNamespace)]
public Int64[] playerIDList;
}
关于如何让 Axis 和 WCF 发挥出色的任何想法?也许我缺少一些属性?提前致谢!
【问题讨论】:
-
@Derrek Dean:你得到的确切错误是什么(假设你有一个错误?
-
它失败了,甚至无法执行用户代码。消息本身就好像它已损坏一样。但是,使用一个值就可以了。