宝哥软件园

ASP.NET核心重装应用配置详解

编辑:宝哥软件园 来源:互联网 时间:2021-08-25

Asp.net核心重装应用程序配置介绍

我将配置放在数据库或Redis中。当需要修改配置时,我需要直接修改数据库,然后调用一个接口来重载应用程序配置,所以我尝试在运行时编写一个接口来重载配置。

配置重新加载实现

重新加载已配置的接口实际上非常简单。查看Configuration的源代码可以知道,如果要重新加载应用程序配置,需要一个iconfigulationroot对象,但是iconfigulationroot实际上可以直接取注入到服务中的iconfigulationroot对象,服务中的iconfigurationObject也是实现iconfigulationroot接口的实例。稍后,我们将更清楚地看到源代码。

看看实现重载配置的代码

使用微软。AspNetCore . Mvc使用微软。扩展。配置;命名空间TestWebApplication。控制器{[路由(' API/[控制器]')]公共类配置控制器:控制器{私有只读图标配置根_配置;公共配置控制器(icon configuration configuration){ _ configuration=配置为IConfigurationRoot}[http get]public interaction result get(){返回ok (new {rootuser=_ configuration。GetAppSetting(' root user ')//其中GetAppSetting是获取AppSettings节点下配置信息的自定义扩展方法});}[httput]public IActionResult Put(){ _ configuration。重载();返回Ok();}}}很简单吗?让我们试试。您可以参考这个示例项目

因为默认的项目配置将监控appsettings.json文件是否被修改,如果被修改,它将被重新加载。在这里,我添加了一个新文件,并将reloadOnChange设置为false。示例代码如下:

公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]参数)=WebHost。CreateDefaultBuilder(args)。ConfigureAppConfiguration(config builder={ config builder。AddJsonFile('abc.json ',optional: true,ReLoadOnchange : false);}) .UseStartupStartup();abc.json的文件内容如下:

{ ' appsettings ' : { ' testnumber ' : 12,' root user' : '李维汉' }} dotnet run启动网站,然后在浏览器中访问http://localhost 33605000/API/configurations。

然后我们修改abc.json文件

{ ' appsettings ' : { ' testnumber ' : 12,' root user' : '李维汉123'}}修改保存后,刷新上一页,可以看到还是和之前一样,证明配置没有重新加载。然后试试我们的重装配置方法。

使用邮递员或提琴手或其他喜欢的工具向http://localhost 33605000/API/配置发送PUT请求。这里我使用postman调用PUT接口来重新加载配置

如果返回200,则接口调用成功。通过刚才刷新页面可以看到页面上的数据发生了变化,证明重新加载配置好的界面是有效的。

源代码解析

让我们看看配置生成器在构建时做了什么,配置生成器源代码

您可以看到这里最后返回的是一个iconfigulationroot对象,然后查看iconfigulationroot源代码

您可以看到IConfigurationRoot定义了一个重载方法,该方法将从以下提供程序重载配置。这里我们知道,应用程序配置可以通过IConfiguration的reload方法重新加载。那我们来看看什么是Webhost。createDefaultBuilder (args)。build()已经完成。https://github。com/aspnet/aspnet core/blob/master/src/default builder/src/web host。铯

这里我们可以看到为什么appsettings.json文件会自动重新加载,我们可以看到最终返回了一个WebHostBuilder对象

看看aspnet核心webhostbuilder对象的构建方法https://github.com/aspnet/aspnetcore/blob/master/src/hosting/hosting/src/webhostbuilder . cs

你可以在BuildCommonServices中看到这样一段代码https://github.com/aspnet/aspnetcore/blob/master/src/hosting/hosting/src/webhostbuilder . cs

正如我们上面已经知道的,在ConfigurationBuilder Build之后,它返回一个iconfigurationroot对象,这里它注入一个iconfigulationroot对象(iconfigulationroot实现iconfigulation接口)。因此,我们可以从依赖注入中获取IConfiguration对象,并直接将其用作iconfigulationroot,这就是为什么我们直接将iconfigulationroot作为iconfigulationroot来获取iconfigulation对象

备忘录

暂时到此为止,希望你能有所收获~

以上是边肖介绍的ASP.NET Core重装应用配置的详细讲解和集成,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

更多资讯
游戏推荐
更多+