当前位置: 首页 > 知识库问答 >
问题:

IMvcBuilder AddJsonOptions去了哪里?网芯3.0?

唐元凯
2023-03-14

我刚刚将我的ASP Web API项目从.Net core 2.0升级到3.0。我正在使用

     services.AddMvc()
             .AddJsonOptions(options =>options.SerializerSettings.ContractResolver 
                                       = new DefaultContractResolver());

以前是为了确保序列化 JSON 的较小大小写。

升级到 3.0 后,我收到此错误:

错误 CS1061 'IMvcBuilder' 不包含 'AddJsonOptions' 的定义,并且找不到可访问的扩展方法 'AddJsonOptions' 接受类型为 'IMvcBuilder' 的第一个参数(您是否缺少 using 指令或程序集引用?

根据Asp。Net Core 2.2 AddJsonOptions扩展方法由Microsoft.AspNetCore.Mvc.Formatters提供。Json是一个nuget包。我已尝试安装/重新安装此软件,但仍然无法解决此问题。有趣的是,intellisense仅显示Microsoft.AspNetCore.Mvc.Formatters。当我尝试添加using语句时,即使我添加了Json nuget包。

知道发生了什么吗?AddJsonOptions的文档只适用于。Net 2.2,所以在3.0中该方法可能已经被弃用,取而代之的是一些其他的配置机制?

共有3个答案

谭玄天
2023-03-14

确保安装了Microsoft.AspNetCore.Mvc.NewtonsoftJson包。

万俟招
2023-03-14

这在使用.Net Core 3时对我有用:

services.AddMvc().AddJsonOptions(o =>
{
    o.JsonSerializerOptions.PropertyNamingPolicy = null;
    o.JsonSerializerOptions.DictionaryKeyPolicy = null;
});
隗翰海
2023-03-14

作为ASP。NETCore3.0中,团队不再使用Json。默认情况下为.NET。您可以在关于中断对Microsoft.AspNetCore.App的更改的公告中了解更多信息。

ASP.NETCore 3.0和. NET Core 3.0没有Json.NET,而是包含了一个不同的JSON API,它更加关注性能。您可以在关于“JSON在. NET Core 3.0中的未来”的公告中了解更多信息。

ASP.NETCore的新模板将不再与Json.NET捆绑在一起,但是您可以轻松地重新配置项目以使用它而不是新的JSON库。这对于与旧项目的兼容性很重要,也因为新库不应该是一个完整的替代品,所以您不会在那里看到完整的功能集。

以便重新配置您的ASP。NET核心3.0项目与Json。NET中,您需要添加对Microsoft.AspNetCore.Mvc的NuGet引用。NewtonsoftJson,它是包含所有必要位的包。然后,在启动的配置服务中,您需要像这样配置MVC:

services.AddControllers()
    .AddNewtonsoftJson();

这将设置 MVC 控制器并将其配置为使用 Json.NET 而不是新的 API。除了控制器之外,您还可以使用不同的 MVC 重载(例如,对于具有视图的控制器或 Razor 页面)。AddNewtonsoftJson方法具有重载,允许您配置 Json.NET 选项,就像您在 ASP.NET Core 2.x中习惯于使用AddJsonOptions一样。

services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.ContractResolver = new DefaultContractResolver();
    });
 类似资料:
  • 问题内容: 在batik的文档中,它显示了如何从类org.apache.batik.dom.svg.SVGDOMImplementation中获取DOM实现的实例。 但是,从同一站点下载Batik 1.8之后,我在任何地方都找不到此类。 我下载了1.7版本,并在batik-svg-dom.jar中找到了它,但它在1.8内的同一jar中不存在(或据我所知在该软件包中的任何jar中都不存在)。 此类已

  • 问题内容: 我正在运行Mac OSX Snow Leopard。 我一直使用Mac OSX的常规软件更新功能来更新Java。 我过去使用Java 工具取得了巨大的成功。 今天早上,我像往常一样键入命令行。我收到以下错误: 所有的其他Java工具(,,等)的工作就好了。 确实不包含(突然)。 产量: WTF? 问题答案: 似乎是链接的混合;/ usr / bin / jvisualvm符号链接指向不

  • 用于创建自己的令牌和字符过滤器的Solr文档说明如下。 http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#Specifying_an_Analyzer_in_the_schema 如果您想使用定制的CharFilters、Tokenizer或TokenFilters,您需要编写一个非常简单的工厂,将BaseTokenizerFa

  • 我想写一个很小的“Hello World”J2ME MIDlet。在这样的示例中,中的类用于显示输出。当我尝试在Eclipse中编译它时,我得到错误, 无法解析导入javax.microedition.lcdui 我已经安装了JME SDK3.4,并且能够运行不导入javax.microedition.lcdui.*的MIDlet。我在某处读到lcdui可以从无线工具包中获得;Oracle表示,从

  • 问题内容: 我正在将某些服务器代码从jersey 1.1版本移植到2.5.1,但似乎找不到JSONConfiguration。 是JAXB上下文解析器不再是Jersey 2.5的一部分,还是组ID已更改?还有另一种机制可以实现ContextResolver吗? 请帮忙。 问题答案: 这是一个愚蠢的问题。如果其他人面临完成港口的压力,我会回答。 删除了使用 JAXBContext 的Jersey /

  • 我尝试将我的项目从JDK1.8迁移到Java9,但它无法编译。我的项目使用了很多类,但似乎没有这些类。他们是被搬到别处还是被弃用了?