【发布时间】:2012-07-10 00:03:38
【问题描述】:
我正在修补 WCF 和 MemoryCache。目标是在 Windows 服务中托管 WCF,以便不同的客户端可以访问此缓存。
第一部分,设置主机工作正常,我可以通过单独的客户端应用程序写入和读取缓存。至少,在尝试将非常简单的对象放入缓存时,例如字符串或 int 之类的值类型。
当我尝试一个“自定义”对象时,即使它只有一个字符串属性,也会出现问题:
There was an error while trying to serialize parameter http://tempuri.org/:value.
TheInnerException message was 'Type 'Solution.MyType' with data contract name
'MyType:http://schemas.datacontract.org/2004/07/MyType' is not expected.
Consider using a DataContractResolver or add any types not known statically to the list
of known types
- for example, by using the KnownTypeAttribute attribute or by
adding them to the list of known types passed to DataContractSerializer.'.
Please see InnerException for more details.
现在经过一番搜索,我发现我可能不得不用 KnownType 属性来装饰我的类型,但可惜没有成功。我也尝试使用 DataContract 和 DataMember 属性来装饰它,但也没有 sigar。
现在该怎么办? WCF DataContractResolver 不应该为我完成这项工作吗?我很难相信我必须为我想要序列化的每个类编写一个自定义 DataContractResolver。 DataContract 和 DataMember 属性还有什么用途?
我在这里缺少什么?另请注意,MyType 不继承自另一个类(保存对象)。
【问题讨论】:
标签: .net wcf serialization tcp memorycache