首页
学习
活动
专区
圈层
工具
发布

ASP.NET Core应用基本编程模式:配置多种使用形式

前面演示了针对Startup类型的构造函数注入,表示配置的IConfiguration对象是能够注入Startup类型构造函数中的两个服务对象之一。...在注册的Startup类型中,可以直接在构造函数中注入IConfiguration服务,并在ConfigureServices方法中将其映射为FoobarOptions类型。...二、以键值对形式读取和修改配置 《配置[3]:配置模型总体设计》对配置模型进行了深入分析,由此可知,IConfiguration对象是以字典的结构来存储配置数据的,该接口定义的索引可供我们以键值对的形式来读取和修改配置数据...如果应用自身存在重复的配置项,那么该配置项的值会被指定的IConfiguration对象覆盖。...Startup>()) .Build() .Run(); } } ASP.NET Core编程模式[1]:管道式的请求处理 ASP.NET Core编程模式[2]:依赖注入的运用

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ASP.NET Core基础补充03

    ASP.NET Core Startup类中的ConfigureServices()方法 依赖注入模式在ASP.NET Core体系结构中大量使用。...在ConfigureServices方法中,可以使用内置IoC容器注册依赖类。注册依赖类后,可以在应用程序中的任何位置使用它。您只需要在要使用它的类的构造函数的参数中包含它即可。...IoC容器将自动注入它。 ASP.NET Core将依赖类称为服务。因此,每当您阅读“服务”,然后将其理解为将在其他一些类中使用的类。...因此,只需要做的只是通过Startup类的构造函数注入IConfiguration服务。 为此,请修改Startup.cs文件中存在的Startup类,如下所示。...然后,通过构造函数依赖项注入,我们注入IConfiguration对象并将其存储在私有变量config中。 以下代码。

    59410

    服务承载系统: 承载服务启动流程

    实际上HostBuilder对象并没有在实现的Build方法中调用构造函数来创建Host对象,该对象利用作为依赖注入容器的IServiceProvider对象创建的。...为了可以采用依赖注入框架来提供构建的Host对象,HostBuilder必须完成前期的服务注册工作。...注册依赖服务:注册所需的依赖服务,包括应用程序通过调用ConfigureServices方法提供的服务注册和其他一些确保服务承载正常执行的默认服务注册。...步骤四、创建IServiceProvider对象 目前我们已经拥有了所有的服务注册,接下来的任务就是利用它创建出作为依赖注入容器的IServiceProvider对象并利用它提供构建的Host对象。...TContainerBuilder对象的设置之后,CreateServiceProvider会将该对象会作为参数调用 IServiceFactoryAdapter的CreateServiceProvider创建出代表依赖注入容器的

    1.6K60

    ASP.NET Core appsettings.json文件(9)《从零开始学ASP.NET CORE MVC》:

    public class Startup { private IConfiguration _configuration; // 注意,我们在这里使用了依赖注入 public...{ await context.Response.WriteAsync(_configuration["MyKey"]); }); } } 依赖注入...在以前版本的ASP.NET中,依赖注入是可选的,要配置它,我们必须使用像Ninject,autofac、castle windsor等第三方框架。...在 asp. net Core 中, 依赖注入是不可或缺的一部分。依赖注入能使我们能够创建低耦合、可扩展且易于测试的系统。 我们将在即将推出的视频中详细讨论依赖注入,尽情期待。...launchsetting 静态类WebHost的CreateDefaultBuilder()方法在应用程序启动时会自动去调用,按特定顺序读取配置源。

    1.7K20

    .Net Core 学习之路-基础

    包含一个launchSettings.json的文件,在项目的Properties"文件夹下 本地计算机开发环境中,这个文件设置了.net core不同运行环境中每个变量的值 在生产环境中,设置环境的方法取决于操作系统而不是此文件了...(args) 这段代码会加载默认配置项,同时也可能启用部分服务 加载顺序为: appsettings.json。...Dispose(); IConfiguration configuration = (IConfiguration)state; configuration.GetSection...Index() { nLogger.Info("nloginfo"); nLogger.Error("nlogerror", new Exception("自定义异常...IOC .net Core 内置了一套默认的依赖注入实现,但并不是太好用 官网提供了一个Autofac的简单示例,之前对Antofac也只是初步了解了一下,没有深入使用 下一篇将详细讲解下.Net core

    1.3K40

    一题多解,ASP.NET Core应用启动初始化的N种方案

    由于依赖注入的广泛应用,中间件的功能基本都依赖于注入的服务来完成,所以将依赖服务注册到依赖注入框架是另一项核心的初始化工作。...如下面的代码片段所示,中间件和服务注册分别实现在Startup类型的ConfigureServices和Configure方法中,我们直接在构造函数中注入IConfiguration对象得到承载配置对象...的支持(除了Build方法),但是针对Startup构造函数中注入的服务则不再那么自由。...IHostingEnvironment IWebHostEnvironment IHostEnvironment IConfiguration 对于如下这段代码,虽然注入Startup构造函数的Foobar...同时通过调用IHostBuilder和IWebHostBuilder的ConfigureServices方法中进行了注册,但是在创建Startup实例的时候依然会抛出异常。

    1.5K20

    从头编写 asp.net core 2.0 web api 基础框架 (3)

    Container管理者这些依赖项的生命周期。...Container就会为ProductController注入它的依赖项。 这样做的最终结果就是,松耦合!(ProductController不必再为那些工作负责了,也和具体的实现类没有直接联系了)。...这时,再需要替换和修改这些依赖项的时候仅需要改非常少的代码或者完全不用改代码了。...在asp.net core里面呢,Ioc和依赖注入是框架内置的,这点和老版本的asp.net web api 2.2不一样,那时候我们得使用像autofac这样的第三方库来实现Ioc和依赖注入。...建议的做法是:在Startup.cs里面注入IConfiguration(这个时候通过CreateDefaultBuilder方法,它已经建立好了),然后把它赋给一个静态的property: public

    1.8K70

    .NET Core采用的全新配置系统: “Options模式”下各种类型的Options对象是如何绑定的?

    旨在生成Options对象的配置绑定实现在IConfiguration接口的扩展方法Bind上。...对于简单类型的配置绑定,除了调用上述的扩展方法Bind来完成之外,我们其实还有更好的选择,那就是调用IConfiguration接口的另一个扩展方法GetValue。...GetValue方法总是将一个原子配置项的值(字符串)转换成目标类型,所以我们在调用该方法是除了指定目标类型之外,还需要通过参数key指定这个原子配置项相对于当前Configuration对象的路径,也就是说参数...) ; 除了上述这个GetValue方法之外,IConfiguration接口还具有如下三个GetValue方法重载,它们最终都会调用上面这个方法来完成针对简单类型的配置绑定。...IConfiguration接口的Bind方法在进行集合绑定的时候,如果某个元素绑定失败,并不会有任何的异常会被抛出,该方法会选择下一个元素继续实施绑定。

    1.2K70

    ASP.NET Core的配置(1):读取配置信息

    我们创建一个针对ASP.NET Core的控制台应用,并在project.json中按照如下的方式添加针对“Microsoft.Extensions.Configuration”这个NuGet包的依赖,...我们调用Configuration对象的索引并指定相应配置项的Key来得到其Value。...在上面演示的实例中,为了创建这些封装配置的对象,我们都是采用手工读取配置的形式,如果定义的配置项太多的话,逐条读取配置项其实是一项非常繁琐的工作。...Option模型实现在“Microsoft.Extensions.OptionModel”这个NuGet包中,除此之外,我们需要采用依赖注入的方式来使用Option模型,所以我们需要按照如下的方式为应用添加针对相应的依赖...在作为程序入口的Main方法中,我们采用如下的方式创建这个表示格式设置的FormatSettings对象。

    1.7K80

    .NET 中50种常见错误使用方法及推荐用法

    硬编码依赖项 硬编码的依赖关系使代码紧密耦合,难以测试且更难扩展。它可以防止轻松换出依赖项,从而降低灵活性。...public void PlaceOrder(Order order) { _database.Save(order); } } 通过构造函数注入依赖项...不使用依赖注入 (DI) 硬编码的依赖项使代码僵化、难以测试并限制了灵活性,尤其是当您需要在不同环境中交换依赖项时。...Deprecated in .NET Core and .NET 5+ 修复: using Microsoft.AspNetCore.Http; // Updated .NET Core library 定期更新依赖项并使用与最新...这种方法提高了可读性,使调试更容易。 38. 使用字符串实现类似 Enum 的行为 依赖特定值的字符串而不是枚举会增加拼写错误的风险,并使代码更难重构和验证。

    68010

    Options: 配置选项的正确使用方式

    依赖注入不仅是支撑整个ASP.NET Core框架的基石,也是开发ASP.NET Core应用采用的基本编程模式,所以依赖注入十分重要。...依赖注入使我们可以将依赖的功能定义成服务,最终以一种松耦合的形式注入消费该功能的组件或者服务中。...除了采用依赖注入的形式消费承载某种功能的服务,还可以采用相同的方式消费承载配置数据的Options对象。...一、将配置绑定为Options对象 Options模式是一种采用依赖注入的方式来提供Options对象的编程方式,但这并不意味着我们会直接利用依赖注入框架来提供Options对象本身,因为利用依赖注入框架获取的是一个能够提供...在调用IServiceCollection的BuildServiceProvider扩展方法得到作为依赖注入容器的IServiceProvider对象之后,可以直接调用其GetRequiredService

    1.4K20

    ASP.NET Core管道详解: ASP.NET Core应用是如何启动的?

    实现类型来完成初始化任务,而GenericWebHostServiceOptions类型的HostingStartupExceptions属性返回的AggregateException对象就是对这些初始化任务执行过程中抛出异常的封装...); } 一个WebHostOptions对象可以根据一个IConfiguration对象来创建,当我们调用这个构造函数时,它会根据预定义的配置键从该IConfiguration对象中提取相应的值来初始化对应的属性...hostingStartupExcludeAssemblies"; } 二、承载服务:GenericWebHostService 从如下所示的代码片段可以看出,GenericWebHostService的构造函数中会注入一系列的依赖服务或者对象...在GenericWebHostService构造函数中注入的对象或者由它们创建的对象(如由ILoggerFactory对象创建的ILogger对象)最终会存储在对应的属性上。...承载GenericWebHostService在启动过程中的处理流程基本上体现在如下所示的StartAsync方法中,该方法中刻意省略了一些细枝末节的实现,如输入验证、异常处理、诊断日志事件的发送等。

    93931

    基于ASP.NET core的MVC站点开发笔记 0x01

    浏览器访问http://localhost:5000,可以看到已经成功获取到Welcome配置项的值: ?...服务注册 上面的IConfiguration可以直接使用,是因为IConfiguration服务已经自动注册过了。...比如Web页面的一次请求; Singleton:单例模式,服务在第一次请求时被创建,其后的每次请求都用这个已创建的服务; 参考资料: NetCore2.0依赖注入(DI)之生命周期 Service...先总结这些吧,突然发现asp.net core这个东西还是挺先进的,比如依赖注入,Startup中的函数多数都是interface,为什么直接对接口操作就可以改变一些东西或者让我们可以自己注册一个中间件到...app上,然后为什么都不需要引用或者实例化就可以直接用app调用了,这都和依赖注入有关系吧,还有接口的设计理念也好像和其他语言的不太一样,神奇了。

    1K10
    领券