【问题标题】:replace property types of XmlQualifiedName[] with string[]?用 string[] 替换 XmlQualifiedName[] 的属性类型?
【发布时间】:2011-04-16 08:45:52
【问题描述】:

我已经根据wsdl 生成了一个在 wsdl 上运行 svcutil 的代理类。

我必须对 Web 服务进行一些修改才能正常工作。例如,我必须将 double[] 类型的所有属性数据类型替换为 string[]。

现在我的问题是:

修改我生成的代理文件并将 XmlQualifiedName[] 的属性类型替换为 string[] 是否可以(仍然有效)?

我想这样做的原因是:

  • 响应 XML 看起来。更好/更清洁 当我使用字符串时
  • 使用 XMLQualifiedName 的响应 xml 在冒号上做了一些不需要的“x003A”编码。

使用 XmlQualifiedName[] 的示例响应:

...
    <Filter_Capabilities xmlns="http://www.opengis.net/ogc">
            <Spatial_Capabilities>
               <GeometryOperands>
                  <q1:GeometryOperand xmlns:q1="http://www.opengis.net/ogc" xmlns="">gml_x003A_Point</q1:GeometryOperand>
                  <q2:GeometryOperand xmlns:q2="http://www.opengis.net/ogc" xmlns="">gml_x003A_LineString</q2:GeometryOperand>
                  <q3:GeometryOperand xmlns:q3="http://www.opengis.net/ogc" xmlns="">gml_x003A_Polygon</q3:GeometryOperand>
               </GeometryOperands>
...

使用字符串[]的示例响应:

...
 <Filter_Capabilities xmlns="http://www.opengis.net/ogc">
    <Spatial_Capabilities>
       <GeometryOperands>
          <GeometryOperand>gml:Point</GeometryOperand>
          <GeometryOperand>gml:LineString</GeometryOperand>
          <GeometryOperand>gml:Polygon</GeometryOperand>
       </GeometryOperands>
...

【问题讨论】:

    标签: xml wcf web-services soap


    【解决方案1】:

    最终,您可以随意更改代理。您的更改的有效性最终取决于客户端服务是否使用修改后的代理在所有情况下执行您希望他们执行的操作。

    不过,我发现此更改可能存在一些问题:

    • 如果您将这些类型用于 XML 之外——例如,如果您使用它们将 JSON 发送到服务——服务将抛出异常。这对于 XmlQualifiedName / string 方案来说不是问题(因为 WCF 的 JSON 反序列化器在这两种情况下都需要常规的 JSON 样式的字符串)。然而,这在双精度/字符串场景中是一个问题(因为 WCF 的 JSON 反序列化程序期望双精度的 JSON 数字而字符串的 JSON 字符串)。

    • 如果您使用这些相同的类型将 XML 请求或响应发送回服务,即使在 XML / SOAP 场景中,它们也可能在服务端引发错误。更危险的是,它们可能会在服务端填充不正确或空的数据(例如,空字符串、零数字、不完整的 XML 限定名称等)。如果您开始使用原语做类似的魔法,这在多态场景中会特别危险。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 2018-03-03
      • 2020-01-27
      • 2019-12-04
      • 2021-07-15
      • 1970-01-01
      相关资源
      最近更新 更多