从请求中删除 i:nill="true"

Remove i:nill="true" from a request

我正在构建一个使用国土安全部提供的 eVerify Web 服务的 WCF 客户端。该服务发布 WSDL 和模式。该模式指定元素可以为空。例如

<xs:element minOccurs="1" name="FirstName" nillable="true" type="xs:string" />

不幸的是,DHS 支持人员告诉我,该服务无法处理遵循此模式的请求中的传入元素。具体来说,我被要求从元素中删除 i:nil="true",例如下面的示例

<FirstName i:nil="true"/>

理想情况下,国土安全部希望看到

<FirstName><FirstName>

有没有办法让我使用 Visual Studio 2013 在 运行 的工厂 WCF 客户端中完成此操作?

最快的方法可能是下载 WSDL 和 XSD,在本地编辑它们,然后在修补版本上生成代理 类。您可以使用 svcutil:

  1. svcutil /t:metadata URL (How to: Use Svcutil.exe to Download Metadata Documents)

  2. svcutil YourWsdlFile.wsdl *.xsd

    请注意,在本地文件上使用 svcutil 时,不会解析 WSDL 中的 <import> 声明;这就是您还需要在命令行上指定所有 XSD 的原因。但是,为了方便起见,您可以使用通配符。