GVKun编程网logo

.Net Core 3.0 中的 IMvcBuilder AddJsonOptions 去了哪里?(.net core cicd)

20

在本文中,我们将给您介绍关于.NetCore3.0中的IMvcBuilderAddJsonOptions去了哪里?的详细内容,并且为您解答.netcorecicd的相关问题,此外,我们还将为您提供关于

在本文中,我们将给您介绍关于.Net Core 3.0 中的 IMvcBuilder AddJsonOptions 去了哪里?的详细内容,并且为您解答.net core cicd的相关问题,此外,我们还将为您提供关于.Net Core 3.0中IMvcBuilder AddJsonOptions放在哪里?、.Net Core 配置文件读取IOptions,IOptionsMonitor,IOptionsSnapshot、android – NoSuchMethodError Notification.Builder.build()、ASP.NET Core 1.0 ConfigurationBuilder().AddJsonFile(“appsettings.json”);找不到文件的知识。

本文目录一览:

.Net Core 3.0 中的 IMvcBuilder AddJsonOptions 去了哪里?(.net core cicd)

.Net Core 3.0 中的 IMvcBuilder AddJsonOptions 去了哪里?(.net core cicd)

我刚刚将我的 ASP Web API 项目从 . Net core 2.03.0. 我正在使用

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

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

升级到 3.0 后出现此错误:

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

根据Asp.Net Core2.2中 MvcJsonOptions 的AddJsonOptions,AddJsonOptions 扩展方法是/由
Microsoft.AspNetCore.Mvc.Formatters.Json nuget
包提供的。我已经尝试安装/重新安装它,但仍然无法解决该方法。有趣的是,智能感知只显示
Microsoft.AspNetCore.Mvc.Formatters。即使我添加了 Json nuget 包,我也尝试添加 using 语句时出现
Xml 。 __

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

答案1

小编典典

作为 ASP.NET Core 3.0 的一部分,团队默认不再包含 Json.NET。您可以在有关Microsoft.AspNetCore.App
的重大更改的公告中阅读更多相关信息。

与 Json.NET 不同,ASP.NET Core 3.0 和 .NET Core 3.0 包含不同的 JSON
API,它更注重性能。您可以在有关“.NET Core 3.0 中 JSON
的未来”的公告中了解更多信息。

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

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

services.AddControllers()    .AddNewtonsoftJson();

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

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

.Net Core 3.0中IMvcBuilder AddJsonOptions放在哪里?

.Net Core 3.0中IMvcBuilder AddJsonOptions放在哪里?

我刚刚从升级了我的ASP Web API项目。Net core 2.03.0。我在用

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

以前是为了确保序列化JSON的小写字母。

升级到3.0后,出现此错误:

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

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

有什么想法吗?该文档为
AddJsonOptions 只上升到.NET 2.2所以也许是方法已经在3.0赞成一些其他配置机制的被弃用?

答案1

小编典典

作为ASP.NET Core
3.0的一部分,该团队默认情况下不再包括Json.NET。您可以在有关对Microsoft.AspNetCore.App进行重大更改的公告中了解有关此内容的更多信息。

代替Json.NET,ASP.NET Core 3.0和.NET Core 3.0包括一个不同的JSON API,该API更加注重性能。您可以在有关“
.NET Core
3.0中JSON的未来”的公告中了解更多信息。

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

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

services.AddControllers()    .AddNewtonsoftJson();

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

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

.Net Core 配置文件读取IOptions,IOptionsMonitor,IOptionsSnapshot

.Net Core 配置文件读取IOptions,IOptionsMonitor,IOptionsSnapshot

前言

众所周知,appsetting.json 配置文件是.Net 的重大革新之心,抛开了以前繁杂的xml文件,使用了更简洁易懂的json方式,简直不要太舒服了!东西虽然好,但怎么在程序中读取这个配置呢,是每个新手必须要跨过去的坑(当然也是包括我这个菜狗子)。

遇事不明上注入,只要是遇到不知道怎么办的事,首先要往注入方便想,框架有了这个配置文件,必然配备了简单直接的读取API,按照我的习惯,直接上代码:

首先,我们在配置文件中,增加 Demo 配置节点:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Demo": {
    "Value1": "1",
    "Value2": "2",
    "Value3": "3",
    "Value4": "4"
  }
}

在需要用到配置文件的地方,注入 IConfiguration 服务接口

private readonly IConfiguration _configuration;

public ValuesController(IConfiguration configuration)
{
    _configuration = configuration;
}

通常,我们比较直接的方式是通过 GetSection 获取对应的配置节点,然后再获取对应的配置项

var section = _configuration.GetSection("Demo");
var value1 = section.GetValue("Value1", "1");

如果 Demo 节点内还有更深的节点,GetSection 可以通过 : 深入到对应的下一个节点

appsetting.json 

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Demo": {
    "Value1": "1",
    "Value2": "2",
    "Value3": "3",
    "Value4": "4",
    "Model" {
      "Name": "小二",
      "Phone": "12345678911"
    }
  }
}
var model = _configuration.GetSection("Demo:Model");

有些小伙伴可能就会问了,那我每个需要用到的地方都需要直接以字符串作为参数去读取配置,以后要是突然改了配置项,岂不是非常麻烦;

这点小伙伴们大可放心,你可以定义一个实体类,然后绑定上去,以后有什么更改了,直接重命名对应的属性就行了,实例代码

方法一:

var options = new DemoOptions();
_configuration.GetSection("Demo").Bind(options);

方法二:

var options2 = _configuration.GetSection("Demo").Get<DemoOptions>();

方法三:在 Startup.cs、.Net 6 以上在 Program.cs- 中使用依赖注入方式,以下是 .Net 6 

builder.Services.Configure<DemoOptions>(builder.Configuration.GetSection("Demo"));

在需要使用的地方注入  IOptions<TOptions> 即可获取到配置值,需要注意的是,IOptions 是单例(Singleton)服务,即在应用启动时进行注册,后续更改配置文件,该 IOptions 将不会同步更新,依然还是旧值 

private readonly DemoOptions _demoOptions;
public ValuesController(IOptions<DemoOptions> options)
{
    _demoOptions = options.Value;
}

如需要配置进行热更新,只需要改成注入 IOptionsMonitor<TOptions> 或者 IOptionsSnapshot<TOptions>;IOptionsSnapshot<TOptions>的生命周期是作用域(Scoped),每次请求都会重新获取一次配置;IOptionsSnapshot<TOptions> 的生命周期是单例(Singleton),与 IOptions<TOptions> 不一样的是当配置文件发生改变时,将会自动同步响应。

到此这篇关于.Net Core 配置文件读取IOptions,IOptionsMonitor,IOptionsSnapshot的文章就介绍到这了,更多相关.Net Core 文件读取内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • .NetCore获取Json和Xml格式的配置信息
  • .NET Core控制台应用ConsoleApp读取appsettings.json配置文件
  • .net6 使用Senparc开发小程序配置过程
  • .NET Core自定义配置文件
  • .NET Core读取配置文件
  • .NET 中配置从xml转向json方法示例详解

android – NoSuchMethodError Notification.Builder.build()

android – NoSuchMethodError Notification.Builder.build()

   Notification noti = new Notification.Builder(context)
            .setContentTitle("TITLE").setContentInfo("INFO")
            .build();
notificationmanager.notify(ID,noti);

我从谷歌页面的样本有问题.我有异常NoSuchMethodError我不知道发生了什么,所以我使用旧的弃用方法与通知noti.setLatestEventInfo,但我敢肯定还有另一种解决方案.有任何想法吗?

解决方法:

Notification.Builder.build()是API级别16.

在4.0.4中,您应该使用getNotification().

或者你最好使用NotificationCompat.

ASP.NET Core 1.0 ConfigurationBuilder().AddJsonFile(“appsettings.json”);找不到文件

ASP.NET Core 1.0 ConfigurationBuilder().AddJsonFile(“appsettings.json”);找不到文件

所以我终于找到了核心,我已经陷入了第一个障碍.我正在遵循Pluralsight ASP.NET核心基础课程,当尝试将appsettings.json文件添加到配置生成器时,我遇到异常.
public Startup()
{
    var builder = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json");

    Configuration = builder.Build();
}

我得到的错误是没有找到配置文件“appsettings.json”,不是可选的.但是我已经直接在我的解决方案下创建了,就像在课程视频中一样.

有什么建议么?

干杯,

@R_301_5609@

您需要添加以下包:
"Microsoft.Extensions.Configuration.Json": "1.0.0"

今天关于.Net Core 3.0 中的 IMvcBuilder AddJsonOptions 去了哪里?.net core cicd的介绍到此结束,谢谢您的阅读,有关.Net Core 3.0中IMvcBuilder AddJsonOptions放在哪里?、.Net Core 配置文件读取IOptions,IOptionsMonitor,IOptionsSnapshot、android – NoSuchMethodError Notification.Builder.build()、ASP.NET Core 1.0 ConfigurationBuilder().AddJsonFile(“appsettings.json”);找不到文件等更多相关知识的信息可以在本站进行查询。

本文标签: