手机版

详细说明ASP.NET核心实现强类型配置读取配置数据

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

JSON文件的读取方式有几种,旧的方式在项目中简单粗暴。结果老板来看了,嗯,这个不太可取,OK,那我就用最新的方式进去。NET Core,记住,最好的就是最好的,不要偷懒。

那个。NET Core通过读取文件来读取JSON文件

当我用VS2017打开VS2015项目,然后添加控制器时,错误将报告如下:

这时,我们应该加上下面一句话来。csproj在这个项目中解决了这个问题:

item group dotnetclitool reference include=' MicroSoft。visualstudio。web . codegeneration . tools ' version=' 1 . 0 . 0 '/item group我们在读取存储JSON的目录时使用IHostingEnvironment类,通过这个类中的以下两个属性获取项目目录:

//获取当前项目所在的目录:var内容路径=_ hostingenv.contentroot路径;//获取wwwroot所在的目录:varrootpath=_ hostingev . webrootpath;我们在当前项目下设置了一个用于存储JSON的文件夹,如下所示:

在这个json文件中,我们给出了以下数据:

{'name' :' jeffcky ',' age' : 25}下一步是读取JSON文件并获取数据:

[HttpSet]public async Taskiactionresult Json(){ var result=string。空的;var filePath=_ hostingEnv。ContentRootPath路径。DirectorySeparatorChar ' Json '路径。directorysparorchar ' read . JSON ';使用(变量流阅读器=系统。{结果=等待流阅读器。ReadToEndAsync();} var json=new { name=string。空,年龄=0 };var数据=JsonConvert。反序列化匿名类型(结果,JSON);返回视图();}此时数据将被完全读取:

直到今天,我发现匿名类型是只读的,不能赋值。[滑稽的我]

以上是一种通过读取Json文件来读取数据的方法。一个请求来了,文件读一遍,不合适,所以老板说不可取,所以用第二个承诺。

那个。NET Core内置了读取JSON文件的功能

当我们需要从其他控制器获取appsettings.json中的值时,我们该怎么办?例如,我们需要读取json文件jb51节点下的名称值

{ ' LogPath ' : ' c : \ \ Jeffcky _ studiefcore \ \ logs ',' Logging ' : { ' include scopes ' : false ',' LogLevel ' : { ' Default ' : ' Debug ',' System' :' Information ',' Microsoft' :' Information'},' JB51 ' 3: { ' Name ' 3: ' Jeffcky ' } }这时,我们有以下两种方法可用:

服务。添加单个配置根(配置);服务。添加单线配置(配置);接下来,它也在控制器构造器中获取。

然后获取json中cnblogs节点下的数据。

这个方法挺好的,但是如果我们习惯了智能提示,检查是不是写错了字也不麻烦,所以最后通过强打读json。程序启动时加载我们的自定义json文件。

公共启动(ihostingenvironmentenv){ var builder=new configuration builder()。SetBasePath(env。ContentRootPath)。AddJsonFile('appsettings.json ',optional: true,reloadOnChange: true)。AddJsonFile($'appsettings。{env。环境名称}。json ',optional: true)。AddJsonFile('read.json ')。AddEnvironmentVariables();配置=构建器。build();}由于读取配置json需要一个根节点,因此我们对上面的read.json文件进行如下修改:

{ ' jb51 ' : { ' name ' : ' Jeff cky ',' age' : 25}}然后在ConfigureServices方法中获取节点。

服务。配置人员(配置。GetSection(' jb51 ');此时,控制器构造函数如下:

私有只读模型。人p;公共ReadJsonController(ioptionmodels)。Person选项){ p=option。价值;}最终将直接读取json中配置的数据:

[https]public IActionResult Json(){ var Age=p . Age;var名称=p .名称;返回视图();}一切都是那么简单自然。

摘要

本节简要说明如何在中实现强类型配置。NET Core,这样就可以在程序启动时直接将json文件加载到内存中,而不是每次都读取文件来加载。希望对阅读这篇文章的你有所帮助。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:详细说明ASP.NET核心实现强类型配置读取配置数据是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。