小谈startup类ConfigureServices方法的作用
2023-03-20 14:53:00 时间
这个是我在面试中遇到的一道面试题,记录下来分享给大家。 简单说ConfigureServices是配置服务器的DI容器,可以添加一些服务进到依赖注入容器中。具体来说就是把中间件等添加到DI容器中,最后都是添加到IServiceCollection中,比如下面的代码:
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryApiResources(Config.GetResource())
.AddInMemoryClients(Config.GetClients())
.AddTestUsers(Config.GetTestUsers())
.AddProfileService<ProfileService>()
.AddResourceOwnerValidator<LoginValidator>();
对于.AddProfileService()来说它已经内置了一个默认实现IProfileService接口的类,默认注入内置的DefaultProfileServer。其实里面的实现是当遇到IProfileService实例化成自定义类ProfileService,而不使用内置的。ASP.NET Core依赖注入在应用程序启动时提供服务。我们可以通过在Startup类的构造方法或Configure方法中包含适当的接口作为参数来请求这些服务。ConfigureServices方法只能接受IServiceCollection参数,但是可以从这个集合中检索任何已注册的服务,因此不需要额外参数。下面由启动方法请求的服务:
位置 | 服务 |
---|---|
构造方法中 | IHostingEnvironment,ILogger |
ConfigureServices方法中 | IServiceCollection |
Configure方法中 | IApplicationBuilder, IHostingEnvironment, ILoggerFactory |
Startup类构造方法或Configure方法可以请求由WebHostBuilde ConfigureServices方法添加的任何服务。使用WebHostBuilder在启动方法中提供需要的任何服务。
相关文章
- 新补丁允许在 x86-64 微架构功能级别上创建 Linux Kernel
- 微软在Windows 11中增加了切换默认浏览器的难度
- Windows 11 Edge Ink API:手写输入延迟最高改善240%
- Fedora 35 将搭载 LLVM 13 和 Go 1.17
- 微软提高了 Windows 11 中切换默认浏览器的难度:你可能只有一次轻松切换的机会
- 微软:Windows 11 Edge 浏览器 Ink API 将网页电子墨迹延迟加快 240%
- Windows 10更新又闯祸了!Windows 10新补丁导致黑屏闪退
- 新发布的Debian 11 “Bullseye” Linux发行版的七大亮点
- HarmonyOS Connect品牌完成切换 鸿蒙智联认证设备加速上市
- 使用Windows 10系统,怎么隐藏任务栏图标?Windows 10隐藏图标操作方法
- 如何有效的在 60 秒内进行 Linux 服务器性能故障分析
- Golang 从 TCP 升级为 WebSocket
- Ubuntu 21.10 将默认使用 Cgroups v2
- 微软将为 Edge 浏览器加入标签搜索功能
- 谷歌 Chrome 浏览器测试标签页缓存功能,能瞬间重启关闭的页面
- Firefox 91.0.1发布:修复常规浏览窗口显示隐私窗口标签页的问题
- 鸿蒙的驱动子系统-3-驱动相关模块的编译
- 5款Windows必备神器!无广告无捆绑,让你的电脑好用十倍
- Firefox 92开始默认启用WebRender:Firefox 93开始无法禁用
- Windows端iCloud更新:新增iCloud Keychain密码管理应用