WCF:服务器没有提供有意义的回复;

我有一个相当简单的 WCF 服务,它来回发送传感器状态。


其中一个类型包含 type 的属性Type


public class SensorValue

{

    public string Name { get; set; }

    public string Value { get; set; }

    public Type ValueType { get; set; }

}

当我通过 WCF 检索传感器值列表时,我收到主题中提到的错误。


是否有明显的原因导致我不允许Type通过 WCF 进行(反)序列化?


扬帆大鱼
浏览 46回答 1
1回答

BIG阳

是System.Type抽象的。假设您使用例如 a 设置该属性,typeof(System.Int32)您将得到一个具体的实现,很可能是一个System.RuntimeType。(不)幸运的是,该类型不是公开的,因此 Datacontract 序列化程序根本无法获取它。它失败并显示:SerializationException:不需要输入数据协定名称为“RuntimeType: http: //schemas.datacontract.org/2004/07/System ”的“System.RuntimeType”。如果您使用 DataContractSerializer,请考虑使用 DataContractResolver,或者将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给序列化器的已知类型列表中。尝试任何指导来解决您的问题是没有用的。将 ValueType 属性的类型替换为正常的类型(例如字符串)并提供足够的信息以便客户端可以根据您在 ValueType 中提供的内容重新创建类型要容易得多。
打开App,查看更多内容
随时随地看视频慕课网APP