我不能使用'services.AddControllers().AddNewtonsoftJson()'
Posted
技术标签:
【中文标题】我不能使用\'services.AddControllers().AddNewtonsoftJson()\'【英文标题】:I can not use the 'services.AddControllers().AddNewtonsoftJson()'我不能使用'services.AddControllers().AddNewtonsoftJson()' 【发布时间】:2020-11-15 03:45:02 【问题描述】:我在 Net core 3.1 中,我正在尝试使用 AddNewtonsoftJson()
我明白了:
“IMvcBuilder”不包含“AddNewtonsoftJson”的定义 并且没有可访问的扩展方法“AddNewtonsoftJson”接受 可以找到“IMvcBuilder”类型的第一个参数(您是否缺少 使用指令还是程序集引用?)”
这是我在 ConfigureService 中写的:
services.AddControllers().AddNewtonsoftJson();
我已经在我的启动项目中安装了 NewtonSoft。
【问题讨论】:
好吧,这似乎是一个很小的区别,但我会重新打开这个 b/c 它在c#
中,列出的欺骗是 F#
。我不想用谷歌搜索足够多的 F# 来知道它对两者都适用。我想要一个 c# 特定的答案。 (同样,我很确定 F# 答案有效(因为它甚至是 for c# 编写的,但它是一个完全不同的标签。您真正要寻找的是将答案移到此处。)
注意:这个问题之前已关闭,因为在这个related f# question 上重复了这个问题,它有一个用 c# 编写的有用答案
【参考方案1】:
您还需要安装Microsoft.AspNetCore.Mvc.NewtonsoftJson,其中包含相应的扩展名methods,如docs中所写。
【讨论】:
2022 年在 asp.net Core 6 中完美运行。【参考方案2】:Microsoft.AspNetCore.Mvc.NewtonsoftJson
包不再包含在Microsoft.AspNetCore.App
框架中(也就是版本 2.x 中的元包),因为新的 System.Text.Json
现在已经足够成熟,可以替换 Newtonsoft.Json
作为内置 json (反)序列化器。
因此考虑将所有使用 Newtonsoft.Json
替换为 System.Text.Json
以获得性能和未来兼容性。
只有在不可能的情况下,您才可以手动安装Microsoft.AspNetCore.Mvc.NewtonsoftJson
包,而不再需要直接引用Newtonsoft.Json
,因为Microsoft.AspNetCore.Mvc.NewtonsoftJson
已经引用了Newtonsoft.Json
。
【讨论】:
以上是关于我不能使用'services.AddControllers().AddNewtonsoftJson()'的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能使用 composer 创建 Laravel 项目?
为啥我不能使用 populateViewHolder 覆盖方法?