是否可以在对实体进行序列化/反序列化时覆盖默认的WCF DataContractSerializer行为并使用JSON.NET?
我有以下处理City实体的服务契约。由于设计原因,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)
{
}
}
很感谢。Hossam。