【发布时间】:2011-03-08 07:19:38
【问题描述】:
是否可以在序列化/反序列化实体时覆盖默认的 WCF DataContractSerializer 行为并改用 JSON.NET?
我有以下处理城市实体的服务合同。出于设计原因,City 实体具有 IsReference=true,因此默认的 DataContractSerializer 会引发错误。
对于“GET”方法,我可以使用 JsonConvert.DeserializeObject 来处理这种情况,但使用“PUT、POST、DELETE”方法时,DataContractSerializer 具有优先权,并且由于无法序列化 IsReference 实体而抱怨失败。
我找到了这个Post 来实现 IOperationBehavior 并提供我自己的序列化器,但我不知道如何将 Json.NET 与它集成。我相信应该有更直接的方法来解决这个问题。
我将不胜感激有关此方案的任何帮助或指导,或对其他方法的建议。
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class CityService
{
[Description("Get all Cities")]
[WebGet(UriTemplate = "")]
public Message Cities()
{
}
[Description("Allows the details of a single City to be updated.")]
[WebInvoke(UriTemplate = "{code}", Method = "PUT")]
public Message UpdateCity(string code, City city)
{
}
}
非常感谢
霍萨姆
【问题讨论】:
-
对传入的请求做同样的事情怎么样?传入的请求是 json camelCase 并且需要在 C# PascalCase 类中序列化?请在此处查看我的帖子:stackoverflow.com/questions/50884879/…
标签: wcf json rest .net-4.0 json.net