【问题标题】:services AddJsonOptions .net core 2.1服务 AddJsonOptions .net 核心 2.1
【发布时间】:2018-09-18 10:44:13
【问题描述】:

在 .net 2.0 之前,您可以通过这种方式添加 json 内容

 services.AddJsonOptions(options => {
                    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            });

services.AddMvc().AddJsonOptions(options => {
                    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            });

我意识到我不能用 .net 2.1 做同样的事情。

我收到此错误:

'IServiceCollection' does not contain a definition for 'AddJsonOptions'
and the best extension method overload 'MvcJsonMvcBuilderExtensions.AddJsonOptions(IMvcBuilder, Action<MvcJsonOptions>)' 
requires a receiver of type 'IMvcBuilder

谁有解决办法?

【问题讨论】:

标签: .net


【解决方案1】:

使用

services.AddMvc().AddJsonOptions(...)

进行配置。

以上扩展方法可以在Microsoft.AspNetCore.Mvc.Formatters.Json Version 2.1.0.0中找到。要么直接包含这个包,要么添加Microsoft.AspNetCore.App/Microsoft.AspNetCore.All这两个之一。

【讨论】:

  • 这不适用于 .net2.1。我之前试过了。
  • 嗯,这对我来说很好。尝试使用dotnet restore 进行还原。并检查您的参考资料。
  • 好的——所以我观察到默认的 mvc 被覆盖了。现在。我观察到 .AddJsonOptions(...) 添加了 ReferenceLoopHandling = ReferenceLoopHandling.Ignore。但是,它似乎没有效果,因为我的代码不断抛出`“消息”:“使用类型'Lemon.Logic.Models.Customers.Customer'检测到自引用循环。路径'Client.Customers [0].Person.Customers '.", "Source": "Newtonsoft.Json`
  • 确保您实际使用自定义选项。但由于我不了解您的代码,因此无法进一步帮助您。
【解决方案2】:

发现问题 - 你需要确保你有参考

Microsoft.AspNetCore.Mvc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-22
    • 2020-09-08
    • 1970-01-01
    • 2018-05-08
    • 2021-06-28
    • 2020-12-22
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多