SOAP请求中的可选DateTime在服务引用中变为DateTime

时间:2016-10-28 13:44:43

标签: c# web-services soap

我的应用程序需要查询第三方SOAP服务 使用SOAP UI时,它会为其中一个方法生成此示例请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:wsedi">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:listMBAllExXML>
         <!--Optional:-->
         <name>?</name>
         <!--Optional:-->
         <password>?</password>
         <!--Optional:-->
         <receiveBinary>?</receiveBinary>
         <!--Optional:-->
         <lastDate>?</lastDate>
         <!--Optional:-->
         <uuid>?</uuid>
         <!--Optional:-->
         <direction>?</direction>
         <!--Optional:-->
         <status>?</status>
      </urn:listMBAllExXML>
   </soapenv:Body>
</soapenv:Envelope>

lastDate被评为可选,服务开发人员的API文档证实了这一点。

但是,当我使用&#34;添加服务参考...&#34;解决方案资源管理器中的菜单,我得到了这个生成的包装器:

listMBAllExModel listMBAllExXML(string name, string password, bool receiveBinary, System.DateTime lastDate, string uuid, string direction)
{
    // some code...
}

如您所见,lastDate的类型为DateTime,而非DateTime?。因此,我无法忽略它。

这是WSDL的问题吗? 是否有任何变通方法(手工编写服务包装器不是一个很好的选择)?

更新。

这是XSD的一部分,包含在服务参考文件夹中:

  <xs:complexType name="listMBAllExXML">
    <xs:sequence>
      <xs:element minOccurs="0" name="name" type="xs:string" />
      <xs:element minOccurs="0" name="password" type="xs:string" />
      <xs:element minOccurs="0" name="receiveBinary" type="xs:boolean" />
      <xs:element minOccurs="0" name="lastDate" type="xs:dateTime" />
      <xs:element minOccurs="0" name="uuid" type="xs:string" />
      <xs:element minOccurs="0" name="direction" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

lastDate没有nillable="true"

0 个答案:

没有答案