.net core 3预览4:未定义'AddNewtonsoftJson'

时间:2019-04-21 21:42:02

标签: f# .net-core-3.0

使用.net core 3预览版4,F#asp.net MVC项目的“ API”模板无法生成。这对模板没有任何更改。

"API" template for a F# asp.net MVC project

这是失败的代码:

type Startup private () =
    member this.ConfigureServices(services: IServiceCollection) =
        // Add framework services.
        services.AddControllers().AddNewtonsoftJson() |> ignore

有错误

  

... \ Startup.fs(23,35):错误FS0039:未定义字段,构造函数或成员'AddNewtonsoftJson'。也许您需要以下之一:AddNewtonsoftJsonProtocol

似乎有changes coming for this-它是否正在开发并且目前无法使用?

3 个答案:

答案 0 :(得分:1)

为了将ASP.NET Core 3.0切换回使用JSON.NET,您将需要引用Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet package。它将包含AddNewtonsoftJson扩展方法。

在C#中,它看起来像这样:

services.AddControllers()
    .AddNewtonsoftJson();

因此,假设我对F#理解得足够多,那么我想说,如果您在项目中引用了该程序包,那么您的调用将是正确的。

答案 1 :(得分:1)

这对我有帮助:

  1. Startup.cs中的代码

services.AddControllers().AddNewtonsoftJson(x => x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);

  1. 将所有Nuget软件包升级到3.1.8(3.1.3无法正常工作)

答案 2 :(得分:1)

它对我有用,从 NuGet 安装 NewtonsoftJson 包 “dotnet 添加包 Microsoft.AspNetCore.Mvc.NewtonsoftJson --version 3.1.0” 版本 3.1.0 适用于 ASP.NET Core 3.0 并使用以下代码-

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
        .AddNewtonsoftJson(opt => {
            opt.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
        });

希望一切顺利,谢谢。