【发布时间】:2014-06-26 17:09:59
【问题描述】:
我正在尝试在方法中传递 MyData 的对象(实际上是引用),但出现异常。通道类型为 NetTcpBinding。
System.ServiceModel.CommunicationException:尝试序列化参数http://tempuri.org/:myData 时出错。 InnerException 消息是 'Type 'System.RuntimeType' 与数据协定名称 'RuntimeType:http://schemas.datacontract.org/2004/07/System' 不是预期的。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。有关详细信息,请参阅 InnerException。 ---> System.Runtime.Serialization.SerializationException:不应使用数据合同名称“RuntimeType:http://schemas.datacontract.org/2004/07/System”键入“System.RuntimeType”。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。
[DataContract]
[KnownType(typeof(System.Type))] //Keeping it here or removing does not make any difference
public class MyData
{
private Type m_MyType = typeof(string);
[DataMember]
public Type MyType //WCF does not like this. If removed of data type changed then ok
{
get { return m_MyType; }
set { m_MyType = value; }
}
private Int32 m_Member1 = 0;
[DataMember]
public Int32 Member1
{
get { return m_Member1; }
set { m_Member1 = value; }
}
}
【问题讨论】:
标签: c# wcf serialization