C# 字符串值上的System.Runtime.Serialization.SerializationException

C# 字符串值上的System.Runtime.Serialization.SerializationException,c#,wcf,rest,serialization,C#,Wcf,Rest,Serialization,我有一个WCF REST服务,它返回的业务对象包含一个名为“GeoDataKML”的字符串字段。该字段只是一个字符串值,但它的内部编码有KML字符串,因此它不会干扰此业务对象的XML序列化。问题是,当此字段中包含数据时,我在尝试下载此数据时遇到WCF错误: System.Runtime.Serialization.SerializationException 考虑使用DATACONTRORTCORDEVER或将未知类型的任何类型添加到已知类型的列表中——例如,使用NoNyType属性或将它们添加

我有一个WCF REST服务,它返回的业务对象包含一个名为“GeoDataKML”的字符串字段。该字段只是一个字符串值,但它的内部编码有KML字符串,因此它不会干扰此业务对象的XML序列化。问题是,当此字段中包含数据时,我在尝试下载此数据时遇到WCF错误:

System.Runtime.Serialization.SerializationException 考虑使用DATACONTRORTCORDEVER或将未知类型的任何类型添加到已知类型的列表中——例如,使用NoNyType属性或将它们添加到传递给DATACONTROTTRORIGLASER的已知类型列表中。 我试图发送的数据如下。如果我清空GeoDataKML值,那么服务工作正常,没有错误。应用KnownType似乎没有任何好处。关于如何让WCF REST不尝试序列化此字符串对象中的数据,有什么想法吗

<?xml version="1.0" encoding="Windows-1252"?><ArrayOfFullLogEntry xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <FullLogEntry>
    <IsSelected>false</IsSelected>
    <StaticGUID>be547685-2bdd-4abf-84a4-d20c13c5fe58</StaticGUID>
    <GeoDataKML>&lt;?xml version="1.0" encoding="Windows-1252"?&gt;&lt;kml xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opengis.net/kml/2.2"&gt;&lt;Placemark id="7e5272b6-d1b4-4128-95bf-24ea9358681a"&gt;&lt;name&gt;CasualtyTool&lt;/name&gt;&lt;styleUrl&gt;#CasualtyTool&lt;/styleUrl&gt;&lt;Point&gt;&lt;altitudeMode&gt;clampToGround&lt;/altitudeMode&gt;&lt;coordinates&gt;-115.594205424414,41.295597016765,5000&lt;/coordinates&gt;&lt;/Point&gt;&lt;/Placemark&gt;&lt;/kml&gt;</GeoDataKML>
    <SymbolGUID>00000000-0000-0000-0000-000000000000</SymbolGUID>
    <GeoDataTypeGUID>00000000-0000-0000-0000-000000000000</GeoDataTypeGUID>....
服务合同只是:

[ServiceContract(Namespace = WCFServiceBaseClass.ServiceNamespace)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, Namespace = WCFServiceBaseClass.ServiceNamespace)]
其中命名空间为

需要添加

<System.Runtime.Serialization.KnownType(GetType(PlacemarkType))> _

在fulllogentry类的顶部。现在工作

所以它可以序列化,但不能反序列化,对吗?请将WCF ServiceContract接口和FullLogEntry类添加到您的帖子中。我可以通过XML进行序列化/反序列化,没有任何问题。只有在WCF REST服务上我才遇到任何问题。有关课程和合同,请参见上文。也没什么特别的。对不起,servicecontract我指的是界面,而不仅仅是属性。通过XML进行序列化/反序列化是什么意思?XmlSerializer,Datacontractserializer,…?XmlSerializer。这里没有接口,它是WCFRest4,所以我只是返回那些FullLogEntry对象的通用列表,没有什么特别的。
<System.Runtime.Serialization.KnownType(GetType(PlacemarkType))> _