2.4配置的热更新「深入浅出ASP.NET Core系列」

简介: 希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。 大家知道通常我们修改网站的配置文件比如,webconfig的时候,网站需要重启才能读取到最新的修改,所谓热更新就是网站无需重启,修改完配置文件,直接F5就可以看到效果如下图所示:   修改IOption为IOptionsSnapshot   上一节当中我们使用IOption来作为注入,这次我们改成IOptionSnapshot,注意如果我们是在Controller里也是一样的,见下图   修改为IOptionsSnapshot后,即可达到热更新,非常简单。

希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。

大家知道通常我们修改网站的配置文件比如,webconfig的时候,网站需要重启才能读取到最新的修改,所谓热更新就是网站无需重启,修改完配置文件,直接F5就可以看到效果如下图所示:

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

修改IOption为IOptionsSnapshot

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

上一节当中我们使用IOption来作为注入,这次我们改成IOptionSnapshot,注意如果我们是在Controller里也是一样的,见下图

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

修改为IOptionsSnapshot后,即可达到热更新,非常简单。

内部机制

我们来看下ASP.NET Core内部是如何做到的?

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

如上图所示,我们增加了一行代码:

builder.AddJsonFile("appsettings.json", false, true);

这里我们重写并覆盖了WebHost内部的CreateDefaultBuilder方法,并且设置了两个bool型参数,其实我们也可以不做重写,也就是上面的代码注释掉

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

一样能达到热更新的目的。

那么,到底WebHost这个静态方法内部做了哪些工作,我们一起访问下面源码连接:https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs,看下内部都做了些什么。

找到函数CreateDefaultBuilder

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

我们看到关键代码:

config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)

其中optional和reloadOnChange默认为true,这就是问题的关键,内部已经另起进程,自动帮我们做配置改变的事件监听了,这就是不做重写覆盖一样能达到热更新的目的所在。

覆盖的目的是,我们有时候配置文件不一定都写在appsettings.json里面,有可能写在自定义的配置文件罢了。

我是.NET架构师张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您的关注。

目录
相关文章
|
1月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
1月前
mcr.microsoft.com/dotnet/core/aspnet:2.1安装libgdiplus
mcr.microsoft.com/dotnet/core/aspnet:2.1安装libgdiplus
30 1
|
2月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
1月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
前端开发 .NET Linux
|
前端开发 .NET Linux
【翻译】Asp.net Core介绍
ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET Core and explains how they help you develop modern web apps. Asp.net Core是重新设计过得新一代Asp.Net。
1187 0
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
43 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
63 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
49 0
|
3月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
下一篇
无影云桌面