gpt4 book ai didi

.net - svcutil.exe - 生成的代理不允许为空字段

转载 作者:行者123 更新时间:2023-12-04 11:32:39 25 4
gpt4 key购买 nike

我试图通过使用 svcutil.exe 创建 WCF 代理来使用使用 WSDL 指定的 Web 服务,但 WSDL 指定某些操作具有可选参数 (minOccurs="0"),例如:

<xs:element minOccurs="0" maxOccurs="1" name="meetingId" type="xs:int" /> 

不幸的是,生成的代理不允许我不指定值(参数不可为空),并且没有“指定”字段作为调用的一部分来指示代理不应发送任何值。

有什么方法可以使用 svcutil 生成允许我执行此操作的代理吗?

(附带说明,我通过研究注意到其他人能够使用“添加服务引用”功能正确生成这些额外的“指定”字段,但无论出于何种原因,Visual Studio 似乎不想在之后生成代理我添加了引用(之后什么也没发生))

WSDL File
Generated Proxy

使用的命令:svcutil http://sas-int.elluminate.com/site/external/adapter/default/v1/webservice.wsdl/internal/n:*,Elluminate.WebService.WebServiceProxy/o:WebServiceProxy.cs/config:App.config/nologo

最佳答案

我猜 svcutil 生成的客户端代理类有一个名为 meetingId 的字段/属性类型 int - 对?是的,这是不可为空的 - 但我敢打赌你也有一个名为 meetingIdSpecified 的 bool 字段/属性- 仅当设置为 true 时服务是否真的会查看它;如果你不设置它,那么服务就不会看这个值,所以就好像它在哪里NULL .

此外 - 您也没有在 XSD 中将该字段指定为可为空 - 您将其指定为可选。要使其可为空,请在此处使用以下语法:

<xs:element minOccurs="0" maxOccurs="1" name="meetingId" type="xs:int" 
nillable="true" />

看到“可为空”属性了吗?这是用于使字段真正可以为空的方法 - 您现在可以在 XML 中拥有这样的条目:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<meetingId xsi:nil="true" />
</root>

马克

关于.net - svcutil.exe - 生成的代理不允许为空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1009895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com