限制框架在 c# Net Core 的 SOAP xml 消息中添加可选标签

Restrict framework from adding optional tags in SOAP xml message in c# NetCore

我正在开发一个使用 SOAP WS 来查询发票信息的 REST webapi。我正在使用 SoapUI 进行测试,我得到了正确的信息。但是从我的 webapi 调用自动生成的方法时,请求包括所有具有默认值的可选属性。

我尝试了很多方法,唯一有效的方法是从自动生成的方法中删除所有可选属性,这证明默认值是问题所在,但如果我想将它们添加为过滤器以获得来自另一个电话的特定发票。 我还尝试为每个带有 "propertyNameSpecified" 的可选值添加一个布尔值 属性,如此处所述:https://docs.microsoft.com/en-us/dotnet/api/system.xml.serialization.xmlserializer?view=netframework-4.8 但是即使这些属性都是假的,信息仍然存在。

这是 WS 的 WSDL:https://fwshomo.afip.gov.ar/wsfecred/FECredService?wsdl 方法是 consultarComprobantes,它获取类型的对象:consultarComprobantesRequest。我可以提供代码,但所有这些都是通过 visual studio 的附加服务自动生成的,如果您需要它,请告诉我。

当我知道有一张发票(我生成了它)并且可以使用 SoapUI 看到它时,结果是一个空数组,请求没有可选参数(或正确的参数以获得此特定发票)

我通过删除所有可选成员来修改代理 class 来修复此问题。它不理想,因为如果我重新生成代理 class 解决方案将不再有效,但只要我不这样做就可以了。 每当我需要在消息中发送一个可选成员时,我只需生成一个新的 class,它继承自仅具有可选参数的那个,并在新的 class 中定义我需要的任何可选成员。 代理方法可以与新的 class 的实例一起使用,因为它是继承的,所以没有问题,因此不需要转换。