我不能使用'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 覆盖方法?

为啥我不能使用类名找到元素?

为啥我不能使用 AsyncMethodCaller?

我不能使用'services.AddControllers().AddNewtonsoftJson()'

为啥我不能使用 RijndaelManaged 解密数据?