【问题标题】:Error with WCF service marking the base typeWCF 服务标记基本类型时出错
【发布时间】:2011-07-06 11:33:45
【问题描述】:
我在使用 WCF 服务时遇到此错误:
类型“**”不能继承自未用 DataContractAttribute 或 SerializableAttribute 标记的类型。
考虑使用 DataContractAttribute 或 SerializableAttribute 标记基本类型“Microsoft.WindowsAzure.StorageClient.TableServiceEntity”,或从派生类型中删除它们。
我的 Silverlight 应用程序能够使用它,但使用 MVC Web 应用程序时出现该错误...
谁能帮我解决这个问题
【问题讨论】:
标签:
c#
wcf
asp.net-mvc-3
azure
【解决方案1】:
如果没有更多的实现细节就很难说清楚,但这听起来像是在每个应用程序中设置类定义的方式不匹配。可能是 silverlight 应用程序项目引用了 Microsoft.WindowsAzure.StorageClient dll,但另一个没有,或者可能是它们引用了不同的版本,并且仅在其中一个中标记为可序列化。传入/传出 WCF 服务的所有数据都必须以某种方式可序列化。
您如何在 WCF 服务和两个不同的应用程序之间共享数据协定的基类和继承类的类定义?您能否发布导致序列化错误的数据合约的更多详细信息?
【解决方案2】:
我检查了 Microsoft.WindowsAzure.StorageClient dll,我在两个项目中都有它。
我有这个类的实现:
public class Template : TableServiceEntity
{
public Template()
{
this.PartitionKey = string.Empty;
this.RowKey = Guid.NewGuid().ToString();
}(...)