如何将Json.Net设置为WCF REST服务的默认序列化器

序列化/反序列化实体时可以改写默认的WCF DataContractSerializer行为,而改用JSON.NET吗?


我具有以下处理城市实体的服务合同。出于设计原因,City实体的IsReference = true,因此默认的DataContractSerializer引发错误。


对于“ GET”方法,我可以使用JsonConvert.DeserializeObject处理这种情况,但是对于“ PUT,POST,DELETE”方法,DataContractSerializer优先并且无法抱怨IsReference实体无法序列化。


我已经找到了实现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)

    {

    }

}


RISEBY
浏览 798回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP