.NET SOAP消费-';无法取消聚合类型';

本文关键字:取消 类型 消费 SOAP NET | 更新日期: 2023-09-27 18:26:24

我正在尝试使用此处公开的Voxbone服务:http://sandbox.voxbone.com/VoxAPI/services/VoxAPI?wsdl

所以我所做的是添加一个新项目,右键单击-添加服务引用
从那里,生成了一堆代码,我得到了我需要的对象。然而,当调用某些函数(其中一些函数可以工作)时,我收到错误:

Could not unmarshall type : cvc-minExclusive-valid: Value '0' is not facet-valid with respect to minExclusive '0' for type 'ID'.

我想这与ID属性有关。。。但老实说,这对我来说很神秘。我试过在谷歌上搜索,但没有用。如有任何见解,我们将不胜感激。

StackTrace:


Server stack trace: 
   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Api.Voxbone.VoxboneService.VoxAPIIntf.GetDIDGroupList(GetDIDGroupListRequest request)
   at Api.Voxbone.VoxboneService.VoxAPIIntfClient.Api.Voxbone.VoxboneService.VoxAPIIntf.GetDIDGroupList(GetDIDGroupListRequest request) in {FileSystem}'Reference.cs:line 7471
   at Api.Voxbone.VoxboneService.VoxAPIIntfClient.GetDIDGroupList(GetDIDGroupList GetDIDGroupList1) in {FileSystem}'Reference.cs:line 7477
   at Api.Voxbone.VBService.GetDIDGroups() in {FileSystem}/VBService.cs:line 60
The '{FileSystem}' was snipped for privacy.

.NET SOAP消费-';无法取消聚合类型';

在WSDL中搜索minExclusive。它在一条评论下面,上面写着<!-- RESTRICTIONS -->。您将看到<xsd:minExclusive value="0"/>,这意味着不能为ID分配小于或等于0的值(因为最小值是exclusive,所以它不包括0)。

解决这个问题的一个简单的方法是下载WSDL,将<xsd:minExclusive value="0"/>更改为<xsd:minExclusive value="-1"/>,然后将web引用重新添加到指向修改后的WSDL而不是原始WSDL的项目中。

解决这个问题的正确方法是弄清楚为什么该ID被分配了一个值0,也许该方法在找不到您请求的对象时会返回这个值?不要相信API会遵守自己的限制!

.NET是正确的。"0"不是ID的有效值。