【发布时间】:2014-06-11 19:27:21
【问题描述】:
我将 .NET 4.5.1 用于我的 WCF 服务,将 .NET 4.0 用于客户端 Windows 服务应用程序。
在数据协定中,有一个 DateTimeOffset? 类型的 DataMember(可以为空的 DataTimeOffset)。
当我向 WCF 服务添加服务引用时,它认为DateTimeOffset? 是一个复杂类型。换句话说,它不认为是System.DateTimeOffset?,而是认为是ServiceReference1.DateTimeOffset?
我该如何解决这个问题?
这是我迄今为止尝试过的:
创建最简单的示例解决方案来演示这一点。不幸的是,我无法重现该问题,因此它必须是我的配置所独有的。
用
[KnownType(typeof(DateTimeOffset?))]注释DataContract类。不幸的是,这并没有做任何事情。选中“在引用的程序集中重用类型”。这导致“ServiceReference1”对象在控制台应用程序中根本不可用。
有人对如何解决这个问题有任何其他想法吗?
谢谢。
【问题讨论】:
-
您的客户端解决方案是什么样的?您是否在测试客户端中包含服务程序集?
-
@dblood,感谢您的回复。是的,这很奇怪。我在自己的项目(类库)中有数据协定,WCF 项目和控制台应用程序项目都引用了它。
-
好的,很好。我们以前使用过这种确切类型的解决方案。可以为客户发布解决方案资源管理器的屏幕截图吗?
-
你写的是客户端认为它是一个类型
ServiceReference1.DataTimeOffset?(注意Data中的第二个a)。我认为这只是这个问题的拼写错误?或者代码中是否有一些命名错误能够以某种方式避免引发错误? -
@Kjartan 修正错字,谢谢