代码之家  ›  专栏  ›  技术社区  ›  Thorsten Dittmar

Visual Studio 2008导入数据类型错误的WSDL

  •  1
  • Thorsten Dittmar  · 技术社区  · 16 年前

    我尝试使用一个Web服务,因此使用该服务的WSDL服务描述向我的项目添加了一个Web服务引用。一切正常,没有错误消息,但我注意到有一个字段声明为 string 在我的Web服务引用中 int .

    在浏览WSDL服务描述时,我注意到各个字段声明为:

    <xsd:complexType name="ItemType">
        <xsd:all>
            <xsd:element name="quantity" type="xsd:integer"/>
        </xsd:all>
    </xsd:complexType>
    

    显然,字段应该是一个整数,但Visual Studio 2008认为它是一个字符串。

    我的问题是:

    1. xsd:integer 有效的WSDL数据类型,或者不应该是 xsd:int ?
    2. 我怎样才能告诉vs 2008这个领域应该是 int ?
    3. 当我提供一个 一串 (只包含数字)在C中,调用者(显然是一个PHP脚本)期望 int 是吗?

    谢谢你的帮助!

    1 回复  |  直到 16 年前
        1
  •  4
  •   marc_s MisterSmith    16 年前

    问题是: xs:integer 是“任意长度的有符号整数”,因此它可能大于.NET Int32类型的范围-->,因此由VS2008转换为字符串。

    使用 xs:int -我相信这正被正确地转换成Int32。

    请参见这里: http://www.codesynthesis.com/projects/xsd/documentation/schema-authoring-guide.xhtml#integer

    xs:int 映射到32位整数,而 整数: 是任意长度的。

    当我提供一个字符串(仅限 包含数字)在c中, 调用者(显然是一个PHP脚本) 期望一个int?

    我会说是的,因为最后,通过线路的消息将始终是其核心的文本XML。它并不真正关心是否提供字符串“12345”并将其序列化到XML消息中,或者是否将“12345”作为in t序列化到消息中——在XML中,最终,所有内容都是字符串。

    马克