我公司的IT部门通过在返回响应中添加新的布尔字段来更新Web服务。在我的VB2010项目中,我将WSDL添加为Web服务。然后我基于非常基本的输入运行查询并返回三个记录。返回的新字段始终为False。当我在SoapUI中运行相同的查询时,我看到该字段为True。事实上,我正在进行的查询有一个过滤器,可以让我回到这个字段为True的所有记录,所以相当积极的过滤器正在工作。
在VB.NET中,我会在响应返回后立即将记录写入调试文件。除新的字段外,所有其他字段都匹配。作为Web服务的新手,我不确定我可以开始进行故障排除的内容。
我所做的唯一故障排除是打开Fiddler拦截响应,并在Fiddler应用程序中查看新字段为True的XML。所以我的猜测是Visual Studio中的服务没有正确解析它。
以下是SoapUI中的响应,其中ExcludeUpdate是新字段。
<ns3:Machines>
<ns3:procIdentifier>415782</ns3:procIdentifier>
<ns3:OST>false</ns3:OST>
<ns3:OLoaded>true</ns3:OLoaded>
<ns3:ExcludeUpdate>true</ns3:ExcludeUpdate>
</ns3:Machines>
答案 0 :(得分:0)
好吧我明白了。不知何故,服务定义中的字段以小写字母开头,如
'''<remarks/>
Public Property excludeUpdate() As Boolean
End Property
但是实际写的XML是大写的,如
<ns3:Machines>
<ns3:procIdentifier>415782</ns3:procIdentifier>
<ns3:OST>false</ns3:OST>
<ns3:OLoaded>true</ns3:OLoaded>
<ns3:ExcludeUpdate>true</ns3:ExcludeUpdate>
</ns3:Machines>
将XML输出更改为以小写字母开头并在Visual Studio项目中更新Web服务后,一切都开始正常工作。