C# 使用JSON.NET序列化JSON时自定义ContractResolver不工作

C# 使用JSON.NET序列化JSON时自定义ContractResolver不工作,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我有一个自定义的ContractResolver,它可以序列化选择性属性。在每个客户机请求上,我将创建一个实例,传递一个布尔值(取决于条件),并将其设置为JsonFormatter的ContractResolver GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DynamicContractResolver(false); 调试时,永远不会

我有一个自定义的ContractResolver,它可以序列化选择性属性。在每个客户机请求上,我将创建一个实例,传递一个布尔值(取决于条件),并将其设置为JsonFormatter的ContractResolver

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DynamicContractResolver(false);
调试时,永远不会命中受保护的重写IList CreateProperties(Type Type,MemberSerialization MemberSerialization)方法

我不明白为什么新的ContractResolver没有在JsonFormatter中设置

另外,设置新ContractResolver的方法如下所示:

    [HttpGet]
    public CustObj GetInfo(string param)
我真的不能像
returnrequest.CreateResponse(HttpStatusCode.OK,result,formatter)这样做因为我需要返回
CustObj


注意:我正在
Global.asax.cs
文件中设置JsonFormatter。

我意识到应用程序正在使用自定义的
ContentCongregator
,因此重置json格式化程序不起作用。在Global.asax文件中设置了
contentcongregator
,如下所示

GlobalConfiguration.Configuration.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));
因此,对于控制器中的每个请求,我调用这个方法,它基本上替换了现有的
contentcongregator

    private void SetNewJsonFormatterWithCustomContractResolver(bool returnMVFormat)
    {
        //Create a new JsonMediaTypeFormatter
        var newJsonFormatter = new JsonMediaTypeFormatter();
        newJsonFormatter.SerializerSettings = new JsonSerializerSettings()
        {
            ContractResolver = new DynamicContractResolver(returnMVFormat)
        };

        GlobalConfiguration.Configuration.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(newJsonFormatter));
    }