C# 字符串值上的System.Runtime.Serialization.SerializationException
我有一个WCF REST服务,它返回的业务对象包含一个名为“GeoDataKML”的字符串字段。该字段只是一个字符串值,但它的内部编码有KML字符串,因此它不会干扰此业务对象的XML序列化。问题是,当此字段中包含数据时,我在尝试下载此数据时遇到WCF错误: System.Runtime.Serialization.SerializationException 考虑使用DATACONTRORTCORDEVER或将未知类型的任何类型添加到已知类型的列表中——例如,使用NoNyType属性或将它们添加到传递给DATACONTROTTRORIGLASER的已知类型列表中。 我试图发送的数据如下。如果我清空GeoDataKML值,那么服务工作正常,没有错误。应用KnownType似乎没有任何好处。关于如何让WCF REST不尝试序列化此字符串对象中的数据,有什么想法吗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属性或将它们添加
<?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><?xml version="1.0" encoding="Windows-1252"?><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"><Placemark id="7e5272b6-d1b4-4128-95bf-24ea9358681a"><name>CasualtyTool</name><styleUrl>#CasualtyTool</styleUrl><Point><altitudeMode>clampToGround</altitudeMode><coordinates>-115.594205424414,41.295597016765,5000</coordinates></Point></Placemark></kml></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))> _