Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除i:nill=";“真的”;根据请求_C#_Wcf - Fatal编程技术网

C# 删除i:nill=";“真的”;根据请求

C# 删除i:nill=";“真的”;根据请求,c#,wcf,C#,Wcf,我正在构建一个WCF客户端,它使用国土安全部提供的eVerify Web服务。此服务发布WSDL和模式。模式指定元素可以为nillable。比如说 <xs:element minOccurs="1" name="FirstName" nillable="true" type="xs:string" /> 不幸的是,DHS支持人员告诉我,该服务无法处理遵循此模式的请求的传入元素。具体来说,我被要求从如下示例中的元素中删除I:nil=“true” <FirstName i:n

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

<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
执行此操作:

  • svcutil/t:元数据URL
    ()

  • svcutil YourWsdlFile.wsdl*.xsd


    请注意,在本地文件上使用
    svcutil
    时,不会解析wsdl中的
    声明;这就是为什么还需要在命令行上指定所有XSD。但是,为了方便起见,可以使用通配符,如图所示


  • 让政府机构发布WSDL,然后不遵循它:)这是否也意味着我需要将端点配置更改为不再指向DHS发布的服务WSDL,而是指向本地副本?不,您仍然希望调用真正的服务。:)使用按所述步骤创建的Something.cs文件替换现有的代理类,其他一切保持原样。(如果您在Visual Studio中使用“添加服务引用”生成代理,请删除该引用并将新的.cs文件包含在项目中。)我将答案标记为正确,但是我要注意的是,在使用svsutil时,我发现我实际上可以以更简单的方式解决问题—通过传递String.Empty。这是一个奇怪的解决方案,但它是有效的。啊,很好的观点。当你想到它时,它其实并不奇怪-
    字符串。Empty
    表示一个值,它恰好是一个空字符串<但是,code>null(或XML中的
    i:nil=“true”
    )表示没有值。虽然它看起来和人类很相似,但对于计算机来说,两者是截然不同的