Visual studio 2008 Visual Studio 2008导入的WSDL数据类型错误
我试图使用一个web服务,因此使用该服务的WSDL服务描述向我的项目添加了一个web服务引用。一切正常,没有错误消息,但我注意到在我的web服务引用中有一个字段被声明为Visual studio 2008 Visual Studio 2008导入的WSDL数据类型错误,visual-studio-2008,data-structures,wsdl,Visual Studio 2008,Data Structures,Wsdl,我试图使用一个web服务,因此使用该服务的WSDL服务描述向我的项目添加了一个web服务引用。一切正常,没有错误消息,但我注意到在我的web服务引用中有一个字段被声明为string,而它应该是int 查看WSDL服务描述时,我注意到相应的字段声明为: <xsd:complexType name="ItemType"> <xsd:all> <xsd:element name="quantity" type="xsd:integer"/>
string
,而它应该是int
查看WSDL服务描述时,我注意到相应的字段声明为:
<xsd:complexType name="ItemType">
<xsd:all>
<xsd:element name="quantity" type="xsd:integer"/>
</xsd:all>
</xsd:complexType>
显然,字段应该是一个整数,但VisualStudio2008认为它是一个字符串
我的问题是:
xsd:integer
是有效的WSDL数据类型还是不应该是xsd:int
int
字符串(仅包含数字),调用方(显然是一个PHP脚本)需要int
时,我还能使用该服务吗
谢谢你的帮助 问题是:
xs:integer
是“任意长度的有符号整数”-因此它可能大于.NET Int32类型的范围-->因此VS2008将其转换为字符串
使用xs:int
——我相信它正确地转换为Int32
请看这里:
xs:int
映射到32位整数,而xs:integer
具有任意长度
当我提供一个字符串(仅限
包含数字)在C#中
调用者(显然是一个PHP脚本)
需要整数吗
我会说是的,因为最终,通过网络传递的消息的核心将始终是文本XML。它实际上并不关心是否提供字符串“12345”并将其序列化到XML消息中,或者是否将“12345”作为INT序列化到消息中-在XML中,最终一切都是一个字符串
Marc问题在于:
xs:integer
是“任意长度的有符号整数”-因此它可能大于.NET Int32类型的范围-->因此它被VS2008转换为字符串
使用xs:int
——我相信它正确地转换为Int32
请看这里:
xs:int
映射到32位整数,而xs:integer
具有任意长度
当我提供一个字符串(仅限
包含数字)在C#中
调用者(显然是一个PHP脚本)
需要整数吗
我会说是的,因为最终,通过网络传递的消息的核心将始终是文本XML。它实际上并不关心是否提供字符串“12345”并将其序列化到XML消息中,或者是否将“12345”作为INT序列化到消息中-在XML中,最终一切都是一个字符串
Marc谢谢-我会将此信息发布到web服务提供商。我是否仍然能够与web服务进行正确通信(请参见我的问题2)?谢谢-我会将此信息发布到web服务提供商。我是否仍然能够与web服务进行正确通信(请参见我的问题2)?