C# 在WCF中使用带有日期和时间元素的Java Web服务
我需要使用一个javawebservice,它的元素类型为Date和Time wsdl中的示例: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.
...
<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非常着迷。。。