我正在运行一个C#WCF REST服务,它工作正常且花花公子。但是,在某些时候,我正在执行PUT请求来更新类。我发送给WCF服务的(修剪过的)JSON:
{
"admin": {
"EntityName": "TestAdmin_xCCg_edited",
"EntityParent": {
"TenantBankAccountNr": "1234567",
"TenantCity": "Amsterdam",
"TenantCountry": "Holland",
"TenantGroup": null,
"TenantNr": "1P",
"TenantPrefix": "MB",
"TenantStreet": "DeStraatStraat",
"TenantStreetNr": "38",
"TenantVatNr": "1234",
"TenantZipcode": "1442",
"AdSynced": false,
"CreatedByUser": null,
"CreationDate": "0001-01-01T00:00:00+01:00",
"EntityName": "Partner_NXfL",
"EntityParent": {
"AdSynced": false,
"CreatedByUser": "Unknown",
"CreationDate": "2013-02-13T15:59:28+01:00",
"EntityName": "Veliq",
"EntityParent": null,
"EntityType": 2,
"EntityUID": "172de253-b71d-44ef-ae52-94c21ca957ba",
"GroupMemberships": null,
"LazyProperties": [
"EntityParent",
"GroupMemberships"
],
"MappedIdentifier": null,
"MappedSystem": null,
"ModificationDate": "2013-02-13T15:59:28+01:00",
"ModifiedByUser": "Unknown"
},
"EntityType": 2,
"EntityUID": "2a15f1ea-fefb-408f-9c88-abcb392ad9c3",
"GroupMemberships": null,
"LazyProperties": [
"EntityParent",
"GroupMemberships",
"TenantGroup"
],
"MappedIdentifier": null,
"MappedSystem": null,
"ModificationDate": "0001-01-01T00:00:00+01:00",
"ModifiedByUser": null
},
"EntityType": 6,
"EntityUID": "70bc26fc-f50d-4e11-8b04-983b1c5978c0",
}
}
基础对象(类型为WSAdmin的“admin”对象)被发送得很好,但问题是EntityParent字段不是。它是WSPartner类型(扩展了扩展WSEntity的WSTenant),但服务器接收的数据是WSEntity类型。这意味着它截断了很多不应该的数据。我该如何解决这个问题?手动添加“__type”:“WSPartner:#MOBIWS”标志不起作用,它会抛出有关ServiceKnownType等的异常。我已经添加了所有这些类型并且它们可以正常工作。
我也看到了关于whitespace giving errors的问题,但这对我来说不是问题(我发送的是非美化的JSON)。任何帮助将不胜感激!
答案 0 :(得分:0)
听起来您需要使用ServiceKnownType属性告诉WCF您的类型。我建议以编程方式(必要时使用反射),而不是硬编码属性中的类型。这个SO问题解释了如何: