半路独行

Asp .Net core 2 学习笔记(1) —— Starup

这个系列的初衷是便于自己总结与回顾,把笔记本上面的东西转移到这里,态度不由得谨慎许多,下面是我参考的资源:

 ASP.NET Core 中文文档目录

官方文档

记在这里的东西我会不断的完善丰满,对于文章里面一些局限于我自己知识积累的观点,希望没有跳走坚持看完的朋友,能够予以指正和鼓励.

 

系列目录

(1)Starup

(2)中间件

(3)静态文件

 

 

基础知识

在 ASP.NET Core 中,Startup 类提供了应用程序的入口,所有应用程序中都有 Startup 类。

基本格式如下:
 1 public class Startup
 2 {
 3    // Use this method to add services to the container.
 4    public void ConfigureServices(IServiceCollection services){
 5           ...
 6    }
 7  
 8    // Use this method to configure the HTTP request pipeline.
 9    public void Configure(IApplicationBuilder app){
10           ...
11    }
12 }
 
ConfigureServices:Startup 类中的公开可选方法,用来配置应用程序内的服务,通过参数获取一个IServiceCollection 实例并可选地返回 IServiceProvider.服务必须在服务容器中注册后,才可在应用和 Configure 方法中使用.例如:控制器中的构造注入,就需要先在该方法中注册,此时服务容器可以看作是IOC容器
 
Configure:Startup 类中的必选方法,用于指定 ASP.NET 应用程序将如何响应每一个 HTTP 请求。简单来说,你可以配置每个请求都接收相同的响应。通常将复杂的管道配置封装于 中间件(middleware) 之中,并通过扩展方法添加到 IApplicationBuilder 上。Configure 方法必须接受一个 IApplicationBuilder 参数.
 
Warnning
ConfigureServices 需要在 Configure 之前被调用。这一点非常重要,这是因为像 ASP.NET MVC 中的某些功能,需要从 ConfigureServices 中请求某些服务,而这些服务需要在接入请求管道之前先被加入 ConfigureServices 中。
 

可用服务

ASP.NET Core 在应用程序启动期间提供了一些默认注册的应用服务和对象。你可以非常简单地使用这些服务,只需要在在 Startup 类的构造函数或是它的 Configure 与 ConfigureServices 方法中的一个包含合适的接口即可。下面定义了在 Startup 类中对每个方法可用的服务。框架服务和对象包括:
 
IApplicationBuilder
被用于构建应用程序的请求管道。只可以在 Startup 中的 Configure 方法里使用
 
IApplicationEnvironment
提供了访问应用程序属性,类似于ApplicationName 、ApplicationVersion 以及 ApplicationBasePath。可以在 Startup 的构造函数和 Configure 方法中使用。
 
IHostingEnvironment
提供了当前的 EnvironmentName、WebRootPath 以及 Web 根文件提供者。可以在 Startup 的构造函数和 Configure 方法中使用。
 
ILoggerFactory
提供了创建日志的机制。可以在 Startup 的构造函数或 Configure 方法中使用。
 
IServiceCollection
当前容器中各服务的配置集合。只可在 ConfigureServices 方法中被使用,通过在该方法中配置可使服务在应用程序中可用。
 

服务扩展

如果想一次注册多个服务,而又不想在ConfigureServices方法中依次添加,该怎么办呢?
我们只需要一个扩展方法就可以搞定
 1     public static class ServiceCollectionExtension
 2     {
 3         public static void AddSomeServices(this IServiceCollection 
 4             services)
 5         {
 6             services.AddScoped(IFirstService, FirstService);
 7             services.AddScoped(ISecondService,SecondService);
 8             services.AddScoped(IThirdService, ThirdService);
 9         }
10     }

在ConfigureServices方法注册一下即可:

 1 services.AddSomeServices(); 
 
这样,一下子就注册了3个服务,而不需要一一添加
 
(终)
 

文档信息

 


感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted @ 2019-04-17 00:11  半路独行  阅读(675)  评论(1编辑  收藏  举报