我通过在XML模式中生成WSDL和类,在Java中编写了JAX-WS WebService。
我在visual studio中将该服务作为web引用添加到c.net客户端应用程序中。
原始的XML模式对某些元素使用了两种日期/时间类型:xs:date和xs:date time。
我的问题是我的“datetime”类型工作不正常。它在生成的类中被转换为一个.NET对象(正确的)(由Visual Studio 2010中的库生成),然后我可以创建我自己的对象,并在其中的一个类中设置子对象。但是,当将请求发送回服务器时,客户端应用程序将发送一个空值,而不是我设置的datetime对象。所以我想它没有正确地序列化。
我对“date”类型没有相同的问题,它可以序列化/反序列化fine。
我注意到可能有问题,但不确定:
生成的类中的DateTime对象如下所示:
[系统.xml.serialization.xmlementattribute(order=10)]
公共系统。日期时间MyDateTime{…}
而生成的类中的日期对象如下所示:
[系统.xml.serialization.xmlementattribute(datatype=“date”,order=12)]
公共系统。日期时间我的日期{…}
因此,date对象中有一些附加信息-datatype=“date”,但datetime对象没有datetype。这可能是问题所在吗?如果是,为什么它不能正确地生成类?
谢谢你的帮助

最佳答案

我遇到了这个问题之前和之后的许多辛勤工作,我发现通信的一端使用英国(DD/MM/YYYY)日期格式,另一个是使用美国(MM/DD/YYYY)格式。这是以机器上的全球化文化为背景的(就像@gaurav的回答),然而,以下情况并不明显:
当我在vs下运行代码时,我以自己的身份运行,因此我的en-gb文化也是如此。您可能知道,当我在i is下运行代码时,它是在aspnet帐户(或网络服务,等等,取决于iis的版本)下运行的。结果发现aspnet帐户具有en-us的文化,因此出现了问题。
简单的解决方案是向web.config添加一个全球化标记,并设置区域性和uiculture属性。

07-24 18:56
查看更多