gpt4 book ai didi

c# - IMvcBuilder AddJsonOptions 在.Net Core 3.0 中去了哪里?

转载 作者:行者123 更新时间:2023-12-01 22:18:50 24 4
gpt4 key购买 nike

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

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

之前是为了确保序列化 JSON 的小写。

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

Error CS1061 'IMvcBuilder' does not contain a definition for 'AddJsonOptions' and no accessible extension method 'AddJsonOptions' accepting a first argument of type 'IMvcBuilder' could be found (are you missing a using directive or an assembly reference?)

根据AddJsonOptions for MvcJsonOptions in Asp.Net Core 2.2 AddJsonOptions 扩展方法由 Microsoft.AspNetCore.Mvc.Formatters.Json nuget 包提供。我已尝试安装/重新安装此方法,但仍然无法解决该方法。有趣的是,当我尝试添加 using 语句时,智能感知仅显示 Microsoft.AspNetCore.Mvc.Formatters.Xml,即使我添加了 Json nuget 包。

有什么想法吗? documentation for AddJsonOptions 仅适用于 .Net 2.2,因此该方法可能已在 3.0 中被弃用,转而采用其他配置机制?

最佳答案

作为 ASP.NET Core 3.0 的一部分,团队不再默认包含 Json.NET。您可以在 announcement on breaking changes to Microsoft.AspNetCore.App 中阅读更多相关信息。 .

ASP.NET Core 3.0 和 .NET Core 3.0 包含不同的 JSON API,而不是 Json.NET,该 API 更注重性能。您可以在announcement about “The future of JSON in .NET Core 3.0”中了解更多信息。 .

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

为了使用 Json.NET 重新配置 ASP.NET Core 3.0 项目,您需要添加对 Microsoft.AspNetCore.Mvc.NewtonsoftJson 的 NuGet 引用,该包包含所有必要的位。然后,在 Startup 的 ConfigureServices 中,您需要像这样配置 MVC:

services.AddControllers()
.AddNewtonsoftJson();

这会设置 MVC Controller 并将其配置为使用 Json.NET 而不是新的 API。您还可以使用不同的 MVC 重载(例如,具有 View 或 Razor 页面的 Controller )来代替 Controller 。该 AddNewtonsoftJson 方法有一个重载,允许您像在 ASP.NET Core 2.x 中使用 AddJsonOptions 一样配置 Json.NET 选项。

services.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});

关于c# - IMvcBuilder AddJsonOptions 在.Net Core 3.0 中去了哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55666826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com