C# 在WCF中使用带有日期和时间元素的Java Web服务

C# 在WCF中使用带有日期和时间元素的Java Web服务,c#,wcf,wcf-client,C#,Wcf,Wcf Client,我需要使用一个javawebservice,它的元素类型为Date和Time wsdl中的示例: ... <xsd:element name="fromTime" nillable="true" type="xsd:time" /> <xsd:element name="dateOfInspection" type="xsd:date" /> ... 。。。 ... 通过添加服务引用使用Web服务时,Visual Studio 2008生成以下代码: [System.

我需要使用一个javawebservice,它的元素类型为Date和Time

wsdl中的示例:

...
<xsd:element name="fromTime" nillable="true" type="xsd:time" />
<xsd:element name="dateOfInspection" type="xsd:date" />
...
。。。
...
通过添加服务引用使用Web服务时,Visual Studio 2008生成以下代码:

[System.Xml.Serialization.SoapElementAttribute(DataType="time", IsNullable=true)]
public System.Nullable<System.DateTime> fromTime { ... }

[System.Xml.Serialization.SoapElementAttribute(DataType="date")]
public System.DateTime dateOfInspection { ... }
[System.Xml.Serialization.SoapElementAttribute(DataType=“time”,IsNullable=true)]
公共系统。可从时间{…}为空
[System.Xml.Serialization.SoapElementAttribute(DataType=“date”)]
public System.DateTime检查日期{…}
发送消息会导致反射错误和innerException:

“time”是SoapElementAttribute.DataType属性的无效值。只能为基元类型指定属性

删除DataType=“time”和DataType=“date”属性时,一切似乎都正常。但修改生成的代码是一种反模式。那么,有没有其他方法可以让它工作呢

更新:

只有当日期或时间元素可为空时,问题才存在

我在MicrosoftsConnect网站上报告了一个bug。如果你有同样的问题,你可以在这里投票:

更新2:

微软确认这是一个bug,不太可能被修复

更新3:


我检查了VS2010,它仍然生成错误的代码。顺便说一句,我们最终修改了生成的代码…

该错误的一个潜在解决方法是创建您自己的代理生成器。这类似于修改生成的代码,但可以说更好,因为您正在更改生成的内容,而不是进行生成后的修改

有关说明,请参阅。关于需要创建的注册表项路径的注意事项:VS2010的注册表路径版本为10.0,在64位Windows上,它需要位于
SOFTWARE\Wow6432Node\Microsoft
,而不是
SOFTWARE\Microsoft


我不确定这对哪些生成器来说是可行的,也不容易实现,除非您可以通过扩展该工具使用的类(这是在上面的链接中完成的)使用WcfProxyGenerator来实现这一点。

?这看起来可能是一个bug。请在报到处报到。然后在这里发布bug报告的URL,以便其他人可以对其进行投票。您是否在Visual Studio 2010中再次尝试过此操作?如果是的话,同样的错误还在吗?(我这样问是因为我的雇主最近对WCF非常着迷。。。